日志文章

2008年04月10日 15:53:45

关于linux下多线程和互斥锁

#include<stdio.h>
#include<pthread.h>
#include<string.h>
#include<sys/types.h>
#include<unistd.h>


//此程序加入了互斥锁
//父子线程是并行,没有一定的顺序
//所以如果父线程加锁,子线程没有可用的资源,你们程序就退出
//如果子线程加锁,父线程没有可用资源,那么程序将会进入等待解锁状态,导致程序不能正常结束.

static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_t ntid;

void printids(const char *s)
{
pid_t pid;
pthread_t tid;

pid = getpid(); //进程ID
tid = pthread_self(); //线程ID

pthread_mutex_lock(&mutex);

printf("%s pid %u tid %u (0x%x)\n",s,(unsigned int)pid,(unsigned int)tid,(unsigned
int)tid);

//下面这行进行注释也就是只加锁,不解锁,测试程序。
pthread_mutex_unlock(&mutex);

}

void *thr_fn(void *arg)
{
printids("new thread:");
return ((void *)0);
}


int main()
{
int err;

err = pthread_create(&ntid,NULL,thr_fn,NULL);
if(err != 0)
{
printf("can't create thread: %s\n",strerror(err));
return 1;
}

printids("main thread:");

return 0;
}

Tags: linux互斥锁  

类别: 无分类 |  评论(1) |  浏览(4747) |  收藏
1楼 [匿名]wf6u289v 2008年07月22日 11:19:16 Says:
%E6%9C
发表评论