 #endif
 	}
 	
-	static func createSemaphore() -> ThreadSemaphore {
+	public static func createSemaphore() -> ThreadSemaphore {
 #if USE_LIBDISPATCH
 		return dispatch_semaphore_create(0)
 #else

		}
	}
	
	static func once(inout threadOnce: ThreadOnce, onceFunc: ThreadOnceFunction) {
#if USE_LIBDISPATCH
		dispatch_once(&threadOnce, onceFunc)
#else

#endif
#endif

public class Threading {
	
	public typealias ThreadOnceFunction = @convention(c) () -> ()
	
#if USE_LIBDISPATCH
	public typealias ThreadClosure = () -> ()
	public typealias ThreadQueue = dispatch_queue_t
	public typealias ThreadSemaphore = dispatch_semaphore_t
	public typealias ThreadOnce = dispatch_once_t
#else
	
	public class ThreadSemaphore {
		
		var mutex = pthread_mutex_t()
		var cond = pthread_cond_t()
