> On 13 Sep 2016, at 14:14, Stephen J. Butler <stephen.but...@gmail.com> wrote: > > This site suggests a version using withUnsafeMutableBufferPointer: > > http://blog.human-friendly.com/swift-arrays-are-not-threadsafe > > let nbrOfThreads = 8 > let step = 2 > let itemsPerThread = number * step > let bitLimit = nbrOfThreads * itemsPerThread > var bitfield = [Bool](count: bitLimit, repeatedValue: false) > > let queue = dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_HIGH, 0 ); > > bitfield.withUnsafeMutableBufferPointer { (inout bitfieldBuffer : > UnsafeMutableBufferPointer<Bool>) -> () in > dispatch_apply( Int(nbrOfThreads), queue ) { ( idx: size_t) -> Void in > let startIndex = itemsPerThread * Int(idx) > let endIndex = min( startIndex + itemsPerThread, bitLimit ) > if talk { print("Thread[\(idx)] does \(startIndex) ..< \(endIndex)") } > > var currIndex = startIndex > while( currIndex < endIndex ) > { > bitfieldBuffer[currIndex] = true > currIndex += step > } > } > }
This is excellent: slightly faster than my original code, uses no additional memory and does not crash. Exactly what I was looking for. Thank your very, very much indeed! Kind regards, Gerriet. _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com