程序示例:
。。。
头文件和其他函数及全局变量
int main(int argc, char** argv)
{
int i=0;
if(argc == 2)
i = atoi(argv[1]);
getseg(&g_data);
pthread_mutexattr_t mutex_shared_attr;
/* Set pthread_mutex_attr to process shared */
pthread_mutexattr_init(&mutex_shared_attr);
pthread_mutexattr_setpshared(&mutex_shared_attr, PTHREAD_PROCESS_SHARED);
pthread_mutexattr_setrobust_np(&mutex_shared_attr, PTHREAD_MUTEX_ROBUST_NP);
pthread_mutex_init(&g_data->sum_mutex, &mutex_shared_attr);
process_fn(i);
printf("%u in the end, the shared sum: %d\n",getpid(), g_data->counter);
return 0;
}
[root@Cross-Main threading]# gcc shm_lock.c -o shm_lock -lpth