• gcd


    @property (nonatomic) dispatch_semaphore_t semaphore;

     self.semaphore = dispatch_semaphore_create([self.progressViews count]);

    dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_FOREVER);

    dispatch_semaphore_signal(self.semaphore);

    ===================================================

    dispatch_source_t  source = dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA_ADD/OR,  0, 0, dispatch_get_main_queue());

     __block long totalComplete = 0;

       dispatch_source_set_event_handler(source, ^{

         long value = dispatch_source_get_data(source);

         totalComplete += value;

         self.progressView.progress = (CGFloat) totalComplete /100.0f;

       });

    dispatch_resume(source);

     dispatch_queue_t

         queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,

    0);

         dispatch_async(queue, ^{

           for (int i = 0; i <= 100; ++i) {

             dispatch_source_merge_data(source, 1);

             usleep(20000);

           }

    });

    =======

    static char kMyKey;

       CFStringRef *value = CFStringCreate...;

       dispatch_queue_set_specific(queue,&kMyKey,(void*)value,(dispatch_function_t)CFRelease);

       dispatch_sync(queue, ^{

         CFStringRef *string = dispatch_get_specific(&kMyKey);

         ...

    });

    ========

    dispatch_queue_set_specific(q, &sQueueTagKey, (__bridge void*)q, NULL);

    =============

    Dispatch Data and Dispatch I/O

    dispatch_io_t serverChannel = dispatch_io_create(DISPATCH_IO_STREAM, socket, queue,

                                            ^(int error) {

                                              NSAssert(!error,

                                                     @"Failed socket:%d", error);

                                              NSLog(@"Closing connection");

                                              close(socket);

    });

     dispatch_data_create

    NSString *writePath = [self outputFilePathForPath:path];

         dispatch_io_t

         fileChannel = dispatch_io_create_with_path(DISPATCH_IO_STREAM,

                                                    [writePath UTF8String],

                                                    O_WRONLY|O_CREAT|O_TRUNC,

                                                    S_IRWXU,

                                                    queue,

    nil);

    dispatch_io_write(serverChannel, 0, requestData, queue,

           ^(bool serverWriteDone,

             dispatch_data_t serverWriteData,

             int serverWriteError) {

             NSAssert(!serverWriteError,

                      @"Server write error:%d", serverWriteError);

             if (serverWriteDone) {

               [self readFromChannel:serverChannel

    } });

  • 相关阅读:
    常用的十种排序
    [CSP-S模拟测试]:Weed(线段树)
    [CSP-S模拟测试]:Blue(贪心)
    $LaTeX$数学公式大全13
    $LaTeX$数学公式大全12
    $LaTeX$数学公式大全11
    $LaTeX$数学公式大全10
    $LaTeX$数学公式大全9
    $LaTeX$数学公式大全8
    [CSP-S模拟测试]:石头剪刀布(rps)(概率DP)
  • 原文地址:https://www.cnblogs.com/anjsxz/p/3772659.html
Copyright © 2020-2023  润新知