我的 python 程序中有一个列表,可以在某些情况下获取新项目(它是消息队列消费者)。然后我有一个线程,每隔几分钟检查一次列表中是否有任何内容,如果有,那么我想对每个项目执行操作,然后清空列表。
现在我的问题:我应该使用锁来确保子线程中的操作是原子的,这是否确保主线程在我浏览列表时不能更改列表?
还是我应该改用某种标志?
伪代码使我的问题更清楚。
子线程:
def run(self):
while 1:
if get_main_thread_list() is not empty:
do_operations()
empty_the_list()
sleep(30)
主线程:
list = []
def on_event(item):
list.add(item)
def main():
start_thread()
start_listening_to_events()
我希望这能让我的问题更清楚,显然欢迎任何指向资源或评论的链接!
PS:我很清楚,对于这个问题,我可能无法很好地掌握线程编程,如果您相信的话,如果您有时间,请花一些时间解释我的推理有什么问题。