|
#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; }
|
一共有 1 条评论