gpt4 book ai didi

c# - 为什么这个简单的线程输出是正确的

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:13 25 4
gpt4 key购买 nike

通过这个article

class ThreadTest
{
static void Main()
{
Thread t = new Thread (WriteY); // Kick off a new thread
t.Start(); // running WriteY()

// Simultaneously, do something on the main thread.
for (int i = 0; i < 1000; i++) Console.Write ("x");
}

static void WriteY()
{
for (int i = 0; i < 1000; i++) Console.Write ("y");
}
}

产生:

xxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
...

为什么它没有产生这样的结果?:

xyxyxyxyxyxxyyxyxxxyyxyxyx....

“线程是一个独立的执行路径,能够与其他线程同时运行。”

以上对我来说并不完全是同时发生的。

最佳答案

这两个线程不能并发运行,因为它们除了重复访问同一个资源外什么都不做。当一个线程正在运行时,另一个线程几乎肯定在等待控制台而无法运行。使用两个线程进行测试,这两个线程除了专门访问完全相同的不可共享资源外,还执行其他操作。

你和我可以同时做事。但如果你和我需要做的唯一差事需要同一辆车,那么我们将轮流结束。你不会只做一件差事,然后把车开回来,这样我就可以做一件差事。那太荒谬了,我们会花所有的时间把车开回来。你会做一些差事,然后我会做一些。

关于c# - 为什么这个简单的线程输出是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731331/

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