gpt4 book ai didi

multithreading - Smalltalk Visual Works并发

转载 作者:行者123 更新时间:2023-12-03 13:19:42 26 4
gpt4 key购买 nike

随着下面的代码,我希望输出像

AA
BB
AA
AA
AA
BB

代码:
p1 := [ 1 to: 3000 do: [:i | Transcript show: 'AA';cr.] ] newProcess.
p2 := [ 5000 to: 8100 do: [:i | Transcript show: 'BB';cr.] ] newProcess.
p1 resume.
p2 resume.

但是它首先打印所有AA,然后打印所有BB。
在Pharo下可以正常工作,但在VisualWorks下则不能。有人可以告诉错误吗?

最佳答案

VisualWorks使用非抢占式多任务处理,这意味着当两个进程具有相同的优先级时,一个进程需要屈服才能使另一个进程运行。尝试运行以下代码以查看区别:

p1 := [ 1 to: 3000 do: [:i |
Transcript show: 'AA';cr.
i \\ 10 = 0 ifTrue: [Processor activeProcess yield]] ] newProcess.
p2 := [ 5001 to: 8101 do: [:i |
Transcript show: 'BB';cr.
i \\ 10 = 0 ifTrue: [Processor activeProcess yield]] ] newProcess.
p1 resume.
p2 resume.

关于multithreading - Smalltalk Visual Works并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27731274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com