Python中文
首页
教程
问答
标签
搜索
登录
注册
我想同时等待一个文件描述符和一个互斥锁,推荐的方法是什么?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我希望派生出执行某些任务的线程,并使用线程安全队列与它们通信。我还想在等待的时候对各种文件描述符进行IO操作。</p> <p>推荐的方法是什么?当队列从无元素变为某些元素时,我是否必须创建一个线程间管道并写入它?不是有更好的办法吗?</p> <p>如果我必须创建线程间管道,为什么更多实现共享队列的库不允许您将共享队列和线程间管道创建为单个实体?</p> <p>我想这样做的事实是否意味着一个根本的设计缺陷?</p> 我问了关于C++和Python的问题。我对跨平台解决方案有点兴趣,但主要是对Linux感兴趣。</p> <p>举个更具体的例子。。。</p> <p>我有一些代码将在文件系统树中搜索内容。我有几个通过插座对外开放的通讯渠道。可能(或可能不会)导致需要在文件系统树中搜索内容的请求将到达。</p> <p>我将在一个或多个线程中分离在文件系统树中搜索内容的代码。我想接受导致需要搜索树的请求,并将它们放入由搜索者线程执行的线程安全队列中。结果将被放入已完成搜索的队列中。</p> <p>我希望能够在搜索过程中快速服务所有非搜索请求。我希望能够对搜索结果及时采取行动。</p> <p>为传入请求提供服务通常意味着某种使用<code>epoll</code>的事件驱动体系结构。磁盘搜索请求队列和结果返回队列意味着一个线程安全队列,它使用互斥量或信号量来实现线程安全。</p> <p>在空队列上等待的标准方法是使用条件变量。但如果我在等待时需要处理其他请求,那就不行了。要么我总是轮询结果队列(平均将结果延迟一半的轮询间隔),要么阻塞请求,要么不为请求提供服务。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我已经用您提到的pipe()和libevent(包装epoll)解决了这个问题。当工作线程的输出队列从空变为非空时,它会将一个字节写入其管道FD。这会唤醒主IO线程,然后主IO线程可以获取工作线程的输出。这很好的工作实际上是非常简单的代码。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
使用Python创建一个非常大的二进制频率矩阵来运行协作过滤
5 回答
使用Python创建一张HTML网页,其中在不同颜色中重复n遍显示“Hello World”的方法
6 回答
使用Python创建一组唯一的值length L
6 回答
使用python创建不同表格的透视表
2 回答
使用python创建不和谐频道
8 回答
使用python创建不存在的多个文件夹
1 回答
使用python创建串行远程文件
3 回答
使用python创建交互式仪表板时出现问题
3 回答
使用python创建交互式绘图
7 回答
使用python创建交互式自动电子邮件
7 回答
使用Python创建价格列表
5 回答
使用python创建修改的txt文件
7 回答
使用Python创建全局变量,初始化后更改值
8 回答
使用Python创建关键字搜索词数组
10 回答
使用Python创建具有不均匀块大小/堆叠条形图的热图
7 回答
使用Python创建具有依赖于另一列的值的列
5 回答
使用Python创建具有多列的HTML表
8 回答
使用Python创建具有时间范围数据的等距数据帧
6 回答
使用Python创建具有特定顺序或属性的XML文件
4 回答
使用Python创建具有级联功能的搜索栏
9 回答