2 weixin 34691120 weixin_34691120 于 2016.05.10 17:29 提问

求大神为什么输出会出现负数 不加锁为什么会出现这种情况 睡眠时间对结果有什么影响
ios

求大神为什么输出会出现负数 不加锁为什么会出现这种情况 睡眠时间对结果有什么影响图片说明图片说明

3个回答

oyljerry
oyljerry   Ds   Rxr 2016.05.10 22:05

你不加锁可能多个线程对它减一 就会出现负数

hi_chen_xingwang
hi_chen_xingwang   Rxr 2016.05.12 11:15

休眠sleep 2.0s期间 并行线程对number 继续进行减操作,延迟2s后才会走出if 判断这时候 已经减了很多次.

svendson
svendson   2016.05.12 14:57

不枷锁的情况下 , 你又把线程写在for循环中, 各个线程都相互独立,在后面程序还没执行 -- 的操作的时候, 前面sleep的程序执行了 -- , 这时候, 后面的循环次数的sleep结束, 再执行时, 这时候number就会一直减下去,这样就出现负数了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小
超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。