如何在一个线程中指定休眠或唤醒另一个线程
背景及问题:
在线一个聊天的程序,客户端有两个线程:A和B。服务器发送一个消息到客户端,这两个线程都有接收的功能,想让A接收消息而阻塞B不让他接收。
办法:
1. 线程B用来做什么的?两个线程都有接收功能,又要A优先于B,那么就要确保A先接收,B在A接收的情况下才接收?
如果是,就让B来判断A的接收状态就可以了。
2. 可以设计一个公共接收接口,A/B线程均可调用。然后在函数体内部添加判断:当前运行线程是指定线程(这里是A线程)的时候才接收。片段:
//假定其他地方已经启动了线程A 和B
pthread_t pid_a;
pthread_t pid_b;
int custom_recv(...)
{
//////////判断当前线程是否是A 线程
pthread_t current_thread = pthread_self();
//非A 线程,稍作休眠,退出
if(!pthread_equal(current_thread,pid_a))
{
sleep(1);
return 0;
}
//A线程,继续接收
.............
}