Rumah > Soal Jawab > teks badan
对于线程来说,可能会有线程安全的问题,比如
total = 0
def do_something():
global total
# do something else
total += 1
这个函数,对全局变量total自增,在多线程的情况下,运行十万次,最终total的结果可能不是100000
而对于单线程中的多个协程来说,可能会出现这种情况吗,比如
total = 0
async def do_something():
global total
# do something else
total += 1
def test():
while True:
# do something
asyncio.ensure_future(do_something())
当do_something()在协程中运行十万次时,total的最终结果一定是十万吗?
阿神2017-04-18 09:58:00
Coroutine Python ialah pseudo-concurrency, bukan concurrency dalam erti kata sebenar. Hanya ada satu sinergi yang sebenarnya sedang diproses, dan jika satu sedang memproses yang lain, semuanya berada dalam keadaan tersekat. Jadi tidak akan ada kekeliruan. Ini sebahagian pemahaman saya. .