tip*_*ipu 6 python concurrency multithreading locking
我正在写一个线程应用程序中的许多文件,我正在为每个文件创建一个处理程序.我有HandlerFactory类来管理这些处理程序的分发.我想做的是
线程A从HandlerFactory类请求并获取foo.txt的文件句柄
线程B请求foo.txt的文件处理程序
处理程序类识别此文件句柄已被签出
handler类将线程A置于休眠状态
线程B使用HandlerFactory中的包装器方法关闭文件句柄
HandlerFactory通知睡眠线程
线程B唤醒并成功获取foo.txt的文件句柄
这是我到目前为止,
def get_handler(self, file_path, type):
self.lock.acquire()
if file_path not in self.handlers:
self.handlers[file_path] = open(file_path, type)
elif not self.handlers[file_path].closed:
time.sleep(1)
self.lock.release()
return self.handlers[file_path][type]
Run Code Online (Sandbox Code Playgroud)
我相信这成功地涵盖了睡眠和处理程序检索,但我不确定如何唤醒所有线程,甚至更好地唤醒特定线程.
| 归档时间: |
|
| 查看次数: |
8543 次 |
| 最近记录: |