Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何在Go中手动创建线程?_Multithreading_Go - Fatal编程技术网

Multithreading 如何在Go中手动创建线程?

Multithreading 如何在Go中手动创建线程?,multithreading,go,Multithreading,Go,我知道goroutines是在Go中处理并发性的方法,但是我正在运行一个测试,在这个测试中,我将比较常规多线程服务器与使用级别触发epoll与边缘触发epoll的服务器。我知道如何创建epoll线程,但是我已经搜索了hi和low关于如何手动创建线程的内容,但没有结果 您可以将goroutine绑定到CPU线程:在多CPU/核心计算机上本地运行。您可以将goroutine绑定到CPU线程:在多CPU/核心计算机上本地运行。您不能这样做。在围棋中你不能控制这种东西。你不能那样做。在Go中,您无法控制

我知道goroutines是在Go中处理并发性的方法,但是我正在运行一个测试,在这个测试中,我将比较常规多线程服务器与使用级别触发epoll与边缘触发epoll的服务器。我知道如何创建epoll线程,但是我已经搜索了hi和low关于如何手动创建线程的内容,但没有结果

您可以将goroutine绑定到CPU线程:在多CPU/核心计算机上本地运行。

您可以将goroutine绑定到CPU线程:在多CPU/核心计算机上本地运行。

您不能这样做。在围棋中你不能控制这种东西。

你不能那样做。在Go中,您无法控制此类内容。

我不确定您的要求是什么:Go运行时对您显式隐藏低级操作系统线程,并且仅公开对它们的一些控制,其唯一目的是允许与外部C库和系统调用更好地集成。试图与之抗衡,比如说,将自己的低级操作系统管理栓在Go运行时上是行不通的,因为这种想法违背了Go运行时的主要目的,因为Go运行时具有经过微调的goroutine调度等。我的意思是,你将创建其他运行时,而不是使用Go。我的意思是,例如,您可以通过cgo或其他方式调用C代码,并在C代码中执行任意操作—包括创建新的pthread、使用轮询等—但不能实际执行Go代码。那么目的是什么?也许只是为了满足他的好奇心?这个问题听起来很理论化。如果我理解正确的话,Go运行时使用。Go运行时在这些低级细节上提供的抽象可能会妨碍此分配。如果我必须做这个作业,我会用Python来做。线程、select、epoll等的所有低级细节都直接向Python中的应用程序程序员公开。@Jthomps-在这里,借调Go似乎是错误的语言。由于使用epoll的一种方法是内置在运行时中的,因此使用另一种方法可能会更加困难,并且可能根本无法正常工作。我不确定您的要求是什么:Go运行时会对您显式隐藏低级操作系统线程,并且只公开对它们的一些控制,其唯一目的是允许与外部C库和系统调用更好地集成。试图与之抗衡,比如说,将自己的低级操作系统管理栓在Go运行时上是行不通的,因为这种想法违背了Go运行时的主要目的,因为Go运行时具有经过微调的goroutine调度等。我的意思是,你将创建其他运行时,而不是使用Go。我的意思是,例如,您可以通过cgo或其他方式调用C代码,并在C代码中执行任意操作—包括创建新的pthread、使用轮询等—但不能实际执行Go代码。那么目的是什么?也许只是为了满足他的好奇心?这个问题听起来很理论化。如果我理解正确的话,Go运行时使用。Go运行时在这些低级细节上提供的抽象可能会妨碍此分配。如果我必须做这个作业,我会用Python来做。线程、select、epoll等的所有低级细节都直接向Python中的应用程序程序员公开。@Jthomps-在这里,借调Go似乎是错误的语言。由于使用epoll的一种方法是内置在运行时中的,因此使用另一种方法可能会更加困难,并且可能根本无法正常工作……从并发性传统上被认为是困难的角度来看,这是一件非常好的事情,因为它暴露了不必要的细节。CSP为并发提供了一个干净的抽象,这与编程语言为汇编代码提供干净的抽象的方式没有什么不同……这是一件非常好的事情,因为并发在传统上被认为是困难的,因为它暴露了不必要的细节。CSP为并发提供了一个干净的抽象,这与编程语言对汇编代码提供干净的抽象的方式没有什么不同。当您应该将goroutine锁定到CPU线程时:当您应该将goroutine锁定到CPU线程时: