请教一个有关C++多线程产生重复数据的简单例子

[复制链接]
查看11 | 回复2 | 2009-7-14 11:19:05 | 显示全部楼层 |阅读模式
两个线程共享同一会出现问题。原理是这样的比如数字A=100这时候线程1和线程2都要执行 A-- 这条语句。A--翻译成汇编是这样的:mov ax,Asub ax,1mov A,ax两个线程同时执行的时候你可以看到这样的情况mov ax,A ;线程1,这时候ax=100,A=100sub ax,1 ;线程1,这时候ax=99mov ax,A ;线程2,这时候ax=100,A=100sub ax,1 ;线程2,这时候ax=99mov A,ax ;线程1,这时候A=99mov A,ax ;线程1,这时候A=99我们本来期望两个线程进行两次自减,但是结果却只减了1次。解决方...
回复

使用道具 举报

千问 | 2009-7-14 11:19:05 | 显示全部楼层
估计是printf语句出了问题吧, 也许就是凑巧了。 printf是个不可重入的函数,在两个线程里都用printf会把缓冲搞乱掉。 你可以多运行几次试试看...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行