据我所知,goroutines 会在其他 goroutines 太忙时阻止它们运行。对我来说,这意味着我的应用程序的性能和响应能力可能取决于我知道哪些库方法将控制其他 goroutines(例如典型的 Read() 和 Write())
有什么方法可以让我确切地知道不同的库方法将如何将控制权交给其他 goroutine,即实际上不会阻塞?
有什么方法可以实现一个新方法来调用第三方代码(包括像 findnextchangenotification 这样依赖于 waitforsingleobject 或 waitformultipleobjects 的异步 Win32 API)并且在 Go 调度器中表现得“很好”?在这个特定的例子中,系统调用将在完成后发出信号,我需要等到它完成而不用尽所有其他 goroutine。
关于如何处理 Go 中的第三方阻塞操作,以便它们不会耗尽其他 goroutines,是否还有另一种“最佳实践”?
我假设 Go 运行时可能在后台线程上内部运行某种 IO 循环,以便“挂起”阻塞的 goroutine 操作,直到它们完成 IO。如果确实如此,那么我想能够在此基础上构建新的阻塞操作可能会很有用。
慕桂英546537
慕丝7291255
慕沐林林
相关分类