当前位置: 技术问答>linux和unix
linux编程—多线程的问题
来源: 互联网 发布时间:2016-11-12
本文导语: 如果有两个线程,线程1产生一个键盘字符(相当于一个命令)来控制线程2的行为 线程2一直监测有没有命令传递过来 同时线程2还要做自己的事情(等待命令的过程中不阻塞), 如果有命令传来,则做出相应的反应 ...
如果有两个线程,线程1产生一个键盘字符(相当于一个命令)来控制线程2的行为
线程2一直监测有没有命令传递过来
同时线程2还要做自己的事情(等待命令的过程中不阻塞),
如果有命令传来,则做出相应的反应
用什么机制可以实现这种等待的过程中还能做自己的事呢??????????
线程2一直监测有没有命令传递过来
同时线程2还要做自己的事情(等待命令的过程中不阻塞),
如果有命令传来,则做出相应的反应
用什么机制可以实现这种等待的过程中还能做自己的事呢??????????
|
条件变量与锁配合
|
如果线程2完全受线程1的控制 那么可以用一个消息队列通信 并用互斥锁保护 每次线程1受到控制字符时 进入临界区 将字符放进消息队列 如果此时队列为空 就说明线程2在睡眠 则唤醒线程1 否则就放进队列 然后退出临界区
如果不是这样(就是说 线程2只是优先接受线程1的 线程1可以抢占线程2的控制权) 那么还是信号吧
如果不是这样(就是说 线程2只是优先接受线程1的 线程1可以抢占线程2的控制权) 那么还是信号吧
|
可以考虑使用pipe(),
线程1向写端写数据,线程2从其中读数据。
线程2在读之前使用
void FD_CLR(int fd, fd_set *set);
int FD_ISSET(int fd, fd_set *set);
void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);
测试pipe中是否有数据。有的话,read()-->server();没有的话,执行其他的动作。
|
pthread_cond_wait 和pthread_cond_singal, 配合互斥锁
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。