多线程并发题目

多线程并发题目            
又一个全局变量tally,和两个线程并发执行(代码段都是ThreadProc):
问连个线程都结束后,tally取值范围

int tally=0;//glable
void ThreadProc()
{
for(int i=1;i<=50;i++)
tally+=1;
}
//end

正确答案是50-100


1:tolly += 1 可以拆成两条原子运算,一个加法,一个赋值
加法只在本线程有效,赋值是全局的,所以 eax 的值不是share的,
只有tolly的值是share的。

2:两个线程的调度是无规则的不是对称的,不能假设对称划分时间片。

有个规则:
被A侵消的B对tolly的变化的贡献, delta(连续次数) * 1, 总是可以找到
一个序列,用A比B晚执行的次数的自增所补回。
假设,B 已经跑完,A 还要自增 n 次,那么 tolly 的最终值是
n的增函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值