> 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

Reply via email to