![](https://static.youtibao.com/asksite/comm/h5/images/m_q_title.png)
[单选题]
多个线程进行并行求和,每个线程将自己负责的值依次读入局部变量x,累加到全局变量sum上,sum+=x,对此,下面说法正确的是()
A.读取x存在数据依赖,不能并发进行
B.累加顺序被改变,结果是错误的
C.加法操作是简单运算,无需同步
D.加法操作不是原子操作,需要同步保证数据依赖
查看答案
![](https://static.youtibao.com/asksite/comm/h5/images/solist_ts.png)
A.读取x存在数据依赖,不能并发进行
B.累加顺序被改变,结果是错误的
C.加法操作是简单运算,无需同步
D.加法操作不是原子操作,需要同步保证数据依赖
给定一个全局数组a[n]b[n],然后是T1~T-1,共-1个线程,线程为代码如下: Ti(){ a=g(a,a[i-1]); b=f(a); } 其中g和f函数的作用是通过输入参数,进行一系列运算后返回。相当于以a[i-1]为输入参数,a和b为输出。 要求使用PV原语,实现T1~T-1的并发互斥,尽量保证最大限度的并发。 a[i-1]为Ti-1叫线程的结果。
有些情况下(如多线程对共享数据操作时),这种线程运行顺序的不确定性将会产生执行结果的不确定,使共享数据的一致性被破坏,因此在某些应用程序中必须对线程进行【 】。