假设我们有以下代码模式:
main(){
sometype data;
#pragma omp parallel for
for(i=0; i< n; i++){
read data;
do some calculations that would be used in order to update the data;
#pragma omp critical{
update data;
}
}
}
我知道我们需要一个临界区来更新数据,因为同时进行两次更新可能会导致损坏,但是如果一个线程在临界区内更新数据而另一个线程正在尝试读取数据会发生什么?
我在网上看到了一些例子,其中阅读被认为是多线程系统中的安全操作,但是我不确定在上述情况下它有多安全。如果它不安全,为了使其安全,应该采取什么适当的措施?
先感谢您