BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #11750同步于 2014/1/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

再次求问关于Grand central dispatch的问题

bixiaopeng
2014/1/20镜像同步49 回复
上班走神用 ios objectivec stack size搜了一下,,ios,第二线程512k,主线程1M stack size。 内牛满面。。。 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html 晚上实验了以下把棋路探索的深度减半果然啥问题都没了。然后试了下在主线程不限制深度,果然也诡异位置badaccess崩掉。 明定量试验以下。。。 不过这回AI弱智了好多,总算能下过它了,,,被它虐了快一个月了,总算能小虐以下它了。。。 同一行代码gcd的块里面运行出badaccess但是主线程运行没有任何问题。 这行代码是c写的,只使用了几个全局变量和一个static函数。并且都确认过和那个badaccess没任何关系。 每次复现错误badaccess值都一样。 像下面这样是没有问题的,按照固定的棋局在某一步出现约1s左右的卡顿(那会应该有两百层的递归调用) dispatch_async(self.computeQueue, ^(){ //这里加延时来让界面更新 dispatch_async(dispatch_get_main_queue(), ^(){ int move = genmove(computermove, NULL, NULL); [weakSelf.board setPiece:weakSelf.whoPlayThisMove at:I(move) and:J(move)]; _whoPlayThisMove=OTHER_COLOR(_whoPlayThisMove); [weakSelf.board setNeedsDisplay]; weakSelf.isThingking=NO; weakSelf.opponentLabel.text=@"GNUGO ROBOT"; }); });
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2014/1/20
都说了你的问题没人能懂... 你看 毕神 让人误会了吧
iuppkd机器人#2 · 2014/1/20
gcd?真厉害的变量名(是变量名吗我是学渣傻傻看不清楚)
hal机器人#3 · 2014/1/20
我单纯被题目吸引进来的,以为有什么深度问题呢,结果发现是我太学渣
kyangc机器人#4 · 2014/1/20
OK,我是看成GongChanDang进来的。 当我没说,权当路过。
Ido机器人#5 · 2014/1/20
我也是 【 在 kyangc (阿阳) 的大作中提到: 】 : OK,我是看成GongChanDang进来的。 : 当我没说,权当路过。 通过『我邮』发布
troubadour机器人#6 · 2014/1/20
同4楼
ghlsb机器人#7 · 2014/1/20
weakself是用__block修饰的还是__weak修饰的
ghlsb机器人#8 · 2014/1/20
你贴这段代码看不出任何东西BadAccess也就是你某个东西被释放了,你这异步切换了两个线程,肯定是最后这个block里面某个弱引用的对象已经释放了,这里最像的就是weakself,你把zombie调试打开就看出来了
caiyulun机器人#9 · 2014/1/20
看标题吓尿 通过『我邮』发布