Linux线程简介
吸血蝙蝠Attention:大家肯定已经注意到了,我们在线程函数thread1()、thread2()执行完之前都调用了pthread_exit。如果我是调用exit()又或者是return会怎样呢?自己动手试试吧! pthread_exit()用于线程退出,可以指定返回值,以便其他线程通过pthread_join()函数获取该线程的返回值。 return是函数返回,只有线程函数return,线程才会退出。 exit是进程退出,如果在线程函数中调用exit,进程中的所有函数都会退出! “4) 线程序1需要在线程2退出后才能退出”第4点也很容易解决,直接在thread1的函数退出之前调用pthread_join就OK了。 上面的代码似乎很好的解决了问题的前面4点要求,其实不然!!!因为g_Flag是一个全局变量,线程thread1和thread2可以同时对它进行操作,需要对它进行加锁保护,thread1和thread2要互斥访问才行。下面我们就介绍如何加锁保护——互斥锁。 互斥锁: 使用互斥锁(互斥)可以使线程按顺序执行。通常,互斥锁通过确保一次只有一个线程执行代码的临界段来同步多个线程。互斥锁还可以保护单线程代码。 互斥锁的相关操作函数如下: #include <pthread.h> int pthread_mutex_lock(pthread_mutex_t * mptr); (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |