【问题标题】:Difference between asyncio call_soon and call_soon_threadsafe? Why is call_soon thread-unsafe?asyncio call_soon 和 call_soon_threadsafe 之间的区别?为什么 call_soon 线程不安全?
【发布时间】:2021-03-26 22:29:54
【问题描述】:

最近看了asyncio的代码,对loop.call_soonloop.call_soon_threadsafe感到困惑。我发现的唯一区别是 call_soon_threadsafe 中有一个_write_to_self。众所周知,事件循环在特定线程中运行。由事件循环有序调度的所有任务。我们可以假设任务是线程安全的,而它们被一一安排。那么call_soon怎么会出现线程不安全的情况呢?

【问题讨论】:

    标签: python thread-safety python-asyncio


    【解决方案1】:

    你是对的:如果我们只有一个事件循环在单个线程中运行(通常是这种情况),我们不需要call_soon_threadsafe

    但有时人们想在一个线程中运行一个事件循环,但很快又从另一个线程调用(无论出于何种原因)。在这种情况下,您需要call_soon_threadsafe

    看看问题herethe answer

    【讨论】:

    • 在我看来,线程安全的东西就像自增和其他竞争情况。但是这个 call_soon_threadsafe 似乎是如何正确地将任务添加到循环中。不是关于比赛情况和并发性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    相关资源
    最近更新 更多