我有一个全局结构体,我在线程中使用,我使用pthread.h
创建。 并发线程事件更新其中的变量。 因此,我通过广泛的调试发现,结构中的数据通常不同步。在线程中同步C中的结构体
C afaik中没有关键词“synchonized
”(Java background)。那么,如何阻止数据结构以保持其有效性?
我的结构是:
struct thread_data
{
int nr;
int time;
};
struct thread_data thread_data_array[MAX_THR];
MAX_THR被定义为10如
我的数据获取传递给新线程pthread_create
:
pthread_create(&threads[num_threads], NULL, Thread_Fkt, &thread_data_array[num_thread]);
有时候线程是内其他创建线程。没有线性终端。 C是否提供了一组同步的数据结构?
感谢)
我也会使结构不透明,并将所有的访问/ mutate操作移动到函数中,所以你知道你在一个地方拥有了一切。 – 2010-11-14 18:09:53