
#import <Foundation/Foundation.h>

@interface NXDispatch : NSObject

+(void) runOnMainQueue:(void (^)(void))block;

// this function make the block not run immedinately, instead, it will run on main queue asynchronizely after all prior tasks finished, it may be needed in some particular circumstance.
+(void) runAsyncOnMainQueue:(void (^)(void))block;

+(void) runOnMainQueue:(void (^)(void))block after:(float)delay;

+(void) runOnHighPorioityQueue:(void (^)(void))block;

+(void) runOnLowPorioityQueue:(void (^)(void))block;

+(void) runOnDefaultPorioityQueue:(void (^)(void))block;

+(void) runOnSerialQueue:(void(^)(void))block;

+(void) runOnSharedSocketQueue:(void(^)(void))block;

+(dispatch_queue_t) sharedQueue;

+(dispatch_queue_t) sharedSocketQueue;

@end
