我正在使用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 。
任何人都知道如何解决这个问题?
答案 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:(使用主题)
创建两个线程
阅读帖子
书写
但是以同步的方式访问你的数组。