当前位置: 技术问答>linux和unix
简单的互斥问题(初学级)
来源: 互联网 发布时间:2015-07-03
本文导语: 我想在FreeBSD下实现进程互斥的东西,只是简单的禁止同一程序同时运行。 不知道怎么实现? 小弟刚学Unix下编程,大家给些建议先! | 呵呵,人家问的是进程啊,不是线程。 禁止同时运行有几种方法,...
我想在FreeBSD下实现进程互斥的东西,只是简单的禁止同一程序同时运行。
不知道怎么实现?
小弟刚学Unix下编程,大家给些建议先!
不知道怎么实现?
小弟刚学Unix下编程,大家给些建议先!
|
呵呵,人家问的是进程啊,不是线程。
禁止同时运行有几种方法,比较好的是锁文件的方法。这样别的进程就无法获得这个文件锁而不能同时运行了。
禁止同时运行有几种方法,比较好的是锁文件的方法。这样别的进程就无法获得这个文件锁而不能同时运行了。
|
是啊,加锁就能解决的,lockf
|
一个简单的程序应该能够满足你的要求了
具体说明看看帮助吧
pthread_mutex_t mymutex;
void *fun(void *arg) 线程所要执行的代码
{
int *i=(int *)arg;
pthread_lock(&mymutex);
*i += 1;
printf("n%d", *i);
pthread_unlock(&mymutex);
}
int main(void)
{
int i = 0;
pthread_t thread1,thread2;
pthread_create(&thread1, NULL, fun, (void *)&i);
pthread_create(&thread2, NULL, fun, (void *)&i);
thread_join(thread1);
thread_join(thread2);
return 0;
}
具体说明看看帮助吧
pthread_mutex_t mymutex;
void *fun(void *arg) 线程所要执行的代码
{
int *i=(int *)arg;
pthread_lock(&mymutex);
*i += 1;
printf("n%d", *i);
pthread_unlock(&mymutex);
}
int main(void)
{
int i = 0;
pthread_t thread1,thread2;
pthread_create(&thread1, NULL, fun, (void *)&i);
pthread_create(&thread2, NULL, fun, (void *)&i);
thread_join(thread1);
thread_join(thread2);
return 0;
}