特定の機会に新しいアイテムを取得する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: 私は、この質問に対してスレッド化プログラミングを十分に理解していない可能性があることを十分に認識しています.