基于iOS中的事件启动多个任务

时间:2013-10-28 09:41:29

标签: ios parallel-processing bluetooth queue

我正在使用EADemo示例开发蓝牙应用程序。只要蓝牙inputStream中有数据,就会调用以下事件:

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
    switch (eventCode) {
      case 1:
       //here I want to start two tasks
       break;

}

我有一个共同的队列,我必须并行编写和阅读。  该队列实际上是一个NSMutuableArray。在写入部分中,我使用 addobject:  在阅读部分中,我使用 objectAtIndex:0

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

当您使用相同阵列时,您需要安全访问,否则可能会导致应用程序崩溃

方法A:(使用Grand Central Dispatch)

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);//set priority as per requirement

//读

dispatch_async(queue, ^{

                    while (//condition to stop)
                    {
                        //Perform read operation            
                    }
                });

//写入

dispatch_async(queue, ^{

                    while (//condition to stop)
                    {
                        //Perform write operation           
                    }
                });

//在同一个队列上执行操作时,可以安全地访问阵列

APPROACH B:(使用主题)

创建两个线程

  1. 阅读帖子

  2. 书写

  3. 但是以同步的方式访问你的数组。