我的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:我很清楚,我可能不会很好地掌握这个问题的线程编程,如果你相信的话,请你花时间解释一下如果你有时间我的推理错误。