基于iOS中的事件启动多个任务
我正在使用EADemo示例开发一个蓝牙应用程序。每当bluetooth inputStream中有数据时,就会调用以下事件:基于iOS中的事件启动多个任务,ios,parallel-processing,bluetooth,queue,Ios,Parallel Processing,Bluetooth,Queue,我正在使用EADemo示例开发一个蓝牙应用程序。每当bluetooth inputStream中有数据时,就会调用以下事件: - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { switch (eventCode) { case 1: //here I want to start two tasks break; } 我有一个公共队列,我必须并行地写
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
switch (eventCode) {
case 1:
//here I want to start two tasks
break;
}
我有一个公共队列,我必须并行地写入和读取。
这个队列实际上是一个相互交错的队列。在编写部分,我使用addobject:
在阅读部分,我使用了objectAtIndex:0
任何人都知道如何解决这个问题吗?因为您使用的是同一个阵列,所以需要确保安全访问,否则可能会导致应用程序崩溃 方法A:(使用中央大调度) //阅读 //写 //在同一队列上执行操作时,可以安全地访问阵列 方法B:(使用线程) 创建两个线程
但要以同步方式访问阵列。在A中:调度和异步同步是否同时启动?起初我也这么想。但我不确定,因为它是dispatch\u async,所以它将立即转到下一行,而不等待执行。所以第一个块将被提交,然后第二个块将被提交。它们如何执行取决于GCD如何为它们提供cpu周期。谢谢你的想法。我稍后再试试这个。目前,我可以访问这两个操作的队列。当我访问不同的对象时,目前没有问题。:)
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
}
});