diff --git a/BuildControl/Info-Framework.plist b/BuildControl/Info-Framework.plist index c941094..2bb1ea9 100644 --- a/BuildControl/Info-Framework.plist +++ b/BuildControl/Info-Framework.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.4.0 + 0.4.1 CFBundleSignature ???? CFBundleVersion diff --git a/CleanroomConcurrency.xcodeproj/project.pbxproj b/CleanroomConcurrency.xcodeproj/project.pbxproj index 4bdb800..180eb80 100644 --- a/CleanroomConcurrency.xcodeproj/project.pbxproj +++ b/CleanroomConcurrency.xcodeproj/project.pbxproj @@ -1222,7 +1222,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 3B38DBD81BA76428000986DF /* Project.xcconfig */; buildSettings = { - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 6; }; name = Debug; }; @@ -1230,7 +1230,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 3B38DBD81BA76428000986DF /* Project.xcconfig */; buildSettings = { - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 6; }; name = Release; }; diff --git a/Documentation/API/Functions.html b/Documentation/API/Functions.html index 0c17596..1af92a7 100644 --- a/Documentation/API/Functions.html +++ b/Documentation/API/Functions.html @@ -239,7 +239,7 @@

Declaration

diff --git a/Documentation/API/Structs.html b/Documentation/API/Structs.html index 96f3fb9..161d4ce 100644 --- a/Documentation/API/Structs.html +++ b/Documentation/API/Structs.html @@ -195,7 +195,7 @@

Declaration

diff --git a/Documentation/API/Structs/CriticalSection.html b/Documentation/API/Structs/CriticalSection.html index ea0b523..d539c65 100644 --- a/Documentation/API/Structs/CriticalSection.html +++ b/Documentation/API/Structs/CriticalSection.html @@ -107,7 +107,7 @@

CriticalSection

Declaration

Swift

-
public init() {}
+
public init()
@@ -238,7 +238,7 @@

Return Value

diff --git a/Documentation/API/Structs/ReadWriteCoordinator.html b/Documentation/API/Structs/ReadWriteCoordinator.html index b52b102..0e4b5a4 100644 --- a/Documentation/API/Structs/ReadWriteCoordinator.html +++ b/Documentation/API/Structs/ReadWriteCoordinator.html @@ -106,7 +106,7 @@

ReadWriteCoordinator

-

Initializes a new ReadWriteCoordinator instance.

+

Initializes a new ReadWriteCoordinator instance.

@@ -133,10 +133,10 @@

Declaration

-

Initializes a new ReadWriteCoordinator instance.

+

Initializes a new ReadWriteCoordinator instance.

:param: queueName The name for the Grand Central Dispatch queue that - will be created for the new ReadWriteCoordinator.

+ will be created for the new ReadWriteCoordinator.

@@ -248,7 +248,7 @@

Declaration

diff --git a/Documentation/API/Structs/ThreadLocalValue.html b/Documentation/API/Structs/ThreadLocalValue.html index b5df317..06a7519 100644 --- a/Documentation/API/Structs/ThreadLocalValue.html +++ b/Documentation/API/Structs/ThreadLocalValue.html @@ -351,7 +351,7 @@

Declaration

diff --git a/Documentation/API/css/jazzy.css b/Documentation/API/css/jazzy.css index 2a7da3a..d6d65b7 100644 --- a/Documentation/API/css/jazzy.css +++ b/Documentation/API/css/jazzy.css @@ -139,7 +139,8 @@ header { .nav-group-task { font-size: 0.9em; - list-style-type: none; } + list-style-type: none; + white-space: nowrap; } .nav-group-task a { color: #888; } diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Info.plist b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Info.plist index 10c9ff7..63e4058 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Info.plist +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Info.plist @@ -7,7 +7,7 @@ CFBundleName CleanroomConcurrency DocSetPlatformFamily - jazzy + cleanroomconcurrency isDashDocset dashIndexFilePath diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Functions.html b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Functions.html index 0c17596..1af92a7 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Functions.html +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Functions.html @@ -239,7 +239,7 @@

Declaration

diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs.html b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs.html index 96f3fb9..161d4ce 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs.html +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs.html @@ -195,7 +195,7 @@

Declaration

diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/CriticalSection.html b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/CriticalSection.html index ea0b523..d539c65 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/CriticalSection.html +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/CriticalSection.html @@ -107,7 +107,7 @@

CriticalSection

Declaration

Swift

-
public init() {}
+
public init()
@@ -238,7 +238,7 @@

Return Value

diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ReadWriteCoordinator.html b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ReadWriteCoordinator.html index b52b102..0e4b5a4 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ReadWriteCoordinator.html +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ReadWriteCoordinator.html @@ -106,7 +106,7 @@

ReadWriteCoordinator

-

Initializes a new ReadWriteCoordinator instance.

+

Initializes a new ReadWriteCoordinator instance.

@@ -133,10 +133,10 @@

Declaration

-

Initializes a new ReadWriteCoordinator instance.

+

Initializes a new ReadWriteCoordinator instance.

:param: queueName The name for the Grand Central Dispatch queue that - will be created for the new ReadWriteCoordinator.

+ will be created for the new ReadWriteCoordinator.

@@ -248,7 +248,7 @@

Declaration

diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ThreadLocalValue.html b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ThreadLocalValue.html index b5df317..06a7519 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ThreadLocalValue.html +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/Structs/ThreadLocalValue.html @@ -351,7 +351,7 @@

Declaration

diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/css/jazzy.css b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/css/jazzy.css index 2a7da3a..d6d65b7 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/css/jazzy.css +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/css/jazzy.css @@ -139,7 +139,8 @@ header { .nav-group-task { font-size: 0.9em; - list-style-type: none; } + list-style-type: none; + white-space: nowrap; } .nav-group-task a { color: #888; } diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/index.html b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/index.html index 8c34667..b1f9fb0 100644 --- a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/index.html +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/index.html @@ -67,7 +67,7 @@
-

Using CleanroomConcurrency

+

Using CleanroomConcurrency

CleanroomConcurrency provides:

@@ -87,13 +87,13 @@

The async function provides a simple notation for specifying that a block of code should be executed asynchronously.

async takes as a parameter a no-argument function returning Void, and is typically invoked with a closure:

-
async {
+
async {
     println("This will execute asynchronously")
 }
 

The operation specified by the closure—the println() call above—will be executed asynchronously.

-

async with delay

+

async with delay

A variation on the async function takes a delay parameter, an NSTimeInterval value specifying the minimum number of seconds to wait before asynchronously executing the closure:

async(delay: 0.35) {
@@ -115,7 +115,7 @@
 

The notation above ensures that the rootViewController is changed only on the main thread.

-

mainThread with delay

+

mainThread with delay

As with the async function, a variation of the mainThread function takes a delay parameter:

mainThread(delay: 0.35) {
@@ -139,7 +139,7 @@
 
 
 

Barrier operations are submitted for eventual execution using the notation:

-
asyncBarrier {
+
asyncBarrier {
     println("When this executes, no other operations will be executing")
 }
 
@@ -154,7 +154,7 @@

CriticalSections are a form of a mutex (or mutual exclusion) lock: when one thread is executing code within a given critical section, it is guaranteed that no other thread will be executing within the same instance.

In this way, CriticalSections are similar to @synchronized blocks in Objective-C.

-

Using a CriticalSection

+

Using a CriticalSection

With a CriticalSection, any code inside the execute closure (shown below as the `// code to execute` comment) is executed only after exclusive access to the critical section has been acquired by the calling thread.

let cs = CriticalSection()
@@ -185,7 +185,7 @@
 

If exclusive access to the critical section cs can’t be acquired within 1.0 seconds, nothing will be executed and executeWithTimeout() will return false.

Note: It is best to design your implementation to avoid the potential for a deadlock. However, sometimes this is not possible, which is why the executeWithTimeout() function is provided.

-

Implementation Details

+

Implementation Details

The CriticalSection implementation uses an NSRecursiveLock internally, which enables CriticalSections to be re-entrant. This means that a thread can’t deadlock on a CriticalSection it already holds.

@@ -285,7 +285,7 @@

Regardless of whether a ThreadLocalValue uses a namespace, the key used to access the threadDictionary is always available via the fullKey property.

-

Thread-local caching

+

Thread-local caching

ThreadLocalValue instances can also be used to treat thread-local storage as a lockless cache.

@@ -317,7 +317,7 @@
diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/undocumented.json b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/undocumented.json new file mode 100644 index 0000000..5406405 --- /dev/null +++ b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/undocumented.json @@ -0,0 +1 @@ +{"warnings":[],"source_directory":"/Users/emaloney/Documents/Code/CleanroomProject/CleanroomConcurrency"} \ No newline at end of file diff --git a/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/undocumented.txt b/Documentation/API/docsets/CleanroomConcurrency.docset/Contents/Resources/Documents/undocumented.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Documentation/API/docsets/CleanroomConcurrency.tgz b/Documentation/API/docsets/CleanroomConcurrency.tgz index b201623..c0dbcbe 100644 Binary files a/Documentation/API/docsets/CleanroomConcurrency.tgz and b/Documentation/API/docsets/CleanroomConcurrency.tgz differ diff --git a/Documentation/API/index.html b/Documentation/API/index.html index 8c34667..b1f9fb0 100644 --- a/Documentation/API/index.html +++ b/Documentation/API/index.html @@ -67,7 +67,7 @@
-

Using CleanroomConcurrency

+

Using CleanroomConcurrency

CleanroomConcurrency provides:

@@ -87,13 +87,13 @@

The async function provides a simple notation for specifying that a block of code should be executed asynchronously.

async takes as a parameter a no-argument function returning Void, and is typically invoked with a closure:

-
async {
+
async {
     println("This will execute asynchronously")
 }
 

The operation specified by the closure—the println() call above—will be executed asynchronously.

-

async with delay

+

async with delay

A variation on the async function takes a delay parameter, an NSTimeInterval value specifying the minimum number of seconds to wait before asynchronously executing the closure:

async(delay: 0.35) {
@@ -115,7 +115,7 @@
 

The notation above ensures that the rootViewController is changed only on the main thread.

-

mainThread with delay

+

mainThread with delay

As with the async function, a variation of the mainThread function takes a delay parameter:

mainThread(delay: 0.35) {
@@ -139,7 +139,7 @@
 
 
 

Barrier operations are submitted for eventual execution using the notation:

-
asyncBarrier {
+
asyncBarrier {
     println("When this executes, no other operations will be executing")
 }
 
@@ -154,7 +154,7 @@

CriticalSections are a form of a mutex (or mutual exclusion) lock: when one thread is executing code within a given critical section, it is guaranteed that no other thread will be executing within the same instance.

In this way, CriticalSections are similar to @synchronized blocks in Objective-C.

-

Using a CriticalSection

+

Using a CriticalSection

With a CriticalSection, any code inside the execute closure (shown below as the `// code to execute` comment) is executed only after exclusive access to the critical section has been acquired by the calling thread.

let cs = CriticalSection()
@@ -185,7 +185,7 @@
 

If exclusive access to the critical section cs can’t be acquired within 1.0 seconds, nothing will be executed and executeWithTimeout() will return false.

Note: It is best to design your implementation to avoid the potential for a deadlock. However, sometimes this is not possible, which is why the executeWithTimeout() function is provided.

-

Implementation Details

+

Implementation Details

The CriticalSection implementation uses an NSRecursiveLock internally, which enables CriticalSections to be re-entrant. This means that a thread can’t deadlock on a CriticalSection it already holds.

@@ -285,7 +285,7 @@

Regardless of whether a ThreadLocalValue uses a namespace, the key used to access the threadDictionary is always available via the fullKey property.

-

Thread-local caching

+

Thread-local caching

ThreadLocalValue instances can also be used to treat thread-local storage as a lockless cache.

@@ -317,7 +317,7 @@
diff --git a/Documentation/API/undocumented.json b/Documentation/API/undocumented.json new file mode 100644 index 0000000..5406405 --- /dev/null +++ b/Documentation/API/undocumented.json @@ -0,0 +1 @@ +{"warnings":[],"source_directory":"/Users/emaloney/Documents/Code/CleanroomProject/CleanroomConcurrency"} \ No newline at end of file diff --git a/Documentation/API/undocumented.txt b/Documentation/API/undocumented.txt deleted file mode 100644 index e69de29..0000000