关于for循环中调用 dispatch_group_async

Nosoft12345 2019-04-16 11:52:17
我有这样一个需求:

-(void) DoDataFromSeverBuf:(char*)cBuf len:(unsigned long)ulDataLength {

//省略 主要是解析服务端数据
}


-(void) HandleServerData(){

dispatch_queue_t queue = dispatch_queue_create("cn.com.test",DISPATCH_QUEUE_SERIAL);

while(true){

unsigned char szBuf[MAX_LENGTH] = {};
unsigned int nRecved = -1;
unsigned long ulBufferLen = 0;

nRecved = GetDataFormServer(szBuf);//从服务端拿数据

dispatch_async(queue,^{

[self DoDataFromSeverBuf:szBuf len:nRecved];
});

}

}


需要把每次从服务端读取的数据放到一个队列里去处理,但在实际跟踪调试的时候,发现szBuf的值为空,居然没取到值。

但实际上从调用GetDataFormServer的跟踪调试的时候,szBuf是有值的,但为什么传给队列的block后,就没有值了呢?


难道dispatch_async 这样的函数,不能在for或while中调用????




...全文
1217 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
BFsAlex 2019-04-23
  • 打赏
  • 举报
回复
GetDataFormServer()里面的操作是异步还是同步?
qq4495894 2019-04-18
  • 打赏
  • 举报
回复
楼上已经说得很清楚,无需我说了。
dirdirdir3 2019-04-17
  • 打赏
  • 举报
回复
正常啊,你用的是局部变量,再进入async的时候就已经释放了。new一个szbuf

29,049

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧