在C中同步struct以进行线程化

1 c linux multithreading posix

我有一个全局结构,我在线程中使用,我创建利用pthread.h.有并发线程事件更新其中的变量.因此,我通过大量调试发现,结构中的数据经常不同步.

synchonized在C afaik中没有像" "(Java背景)这样的关键字.那么如何阻止数据结构以使其有效?

我的结构是:

struct thread_data 
{
   int nr;
   int time;
};
struct thread_data thread_data_array[MAX_THR];
Run Code Online (Sandbox Code Playgroud)

MAX_THR定义为10例如.

我的数据传递给新线程pthread_create:

pthread_create(&threads[num_threads], NULL, Thread_Fkt, &thread_data_array[num_thread]);
Run Code Online (Sandbox Code Playgroud)

有时线程是在其他线程中创建的.没有线性终止.C是否提供了一组同步的数据结构?

谢谢 ;)

ice*_*ime 8

你应该看看pthread mutex:

互斥锁是一种Mutual排除设备,可用于保护共享数据结构免受并发修改,以及实现关键部分和监视器.

  • 我还将结构变为不透明并将所有访问/变异操作移动到函数中,因此您知道在一个地方拥有所有内容. (3认同)