首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux下的c++,线程有类似于进程wait的函数么?解决方法

2012-02-20 
linux下的c++,线程有类似于进程wait的函数么?线程A建立线程B、C,线程B sleep(30),线程C sleep(35),但是线程

linux下的c++,线程有类似于进程wait的函数么?
线程A建立线程B、C,线程B sleep(30),线程C sleep(35),但是线程C可能被别的线程提前结束。要求线程A阻塞,直到B或者C结束,并且能判断出到底是B还是C结束了。

对于进程来说很容易实现,只要fork两次,让父进程wait(NULL)就可以了。其他进程可以通过kill来结束C,wait函数会返回结束的pid号码。

我的问题就是线程需要实现同样的功能,需要怎么做?其实是两个问题:
1.如何结束其他线程?(实现类似于kill的功能)
2.如何阻塞主线程,并且判断到底是B还是C线程结束了?(实现类似于wait(NULL)的功能)

求达人解惑


[解决办法]
pthread_cond_wait, pthread_cond_timedwait, pthread_cond_reltimedwait_np– wait on a condition

pthread_kill
The pthread_kill() function sends the sig signal to the thread designated by thread

[解决办法]
阻塞A线程的方法:
在线程A里 
(1)用pthread_create创建B、C。
(2)用pthread_join等待B和C结束,然后判断是哪个线程结束。

其他还有很多pthread开头的函数,你自己搜索看看,是否有你所要的
[解决办法]
pthread_join的第二个参数能返回所等待线程的结束状态的。若所等待线程是执行结束后返回的,pthread_join能得到返回码,若所等待线程是被取消掉的,pthread_join能得PTHREAD_CANCELED.

热点排行