首页 > 解决方案 > 是否可以在不同的用户下运行 goroutine 或 go 方法?

问题描述

我正在开发一个小型 Web 服务器,该服务器提供文件并提供对每个用户主目录的访问。

如果源是在 CI 中,则可以选择在不同线程下回答每个请求,并确保每个线程都以调用者的用户作为其用户运行。

有什么方法可以实现类似于 Go 中的功能吗?理想情况下,处理请求的代码部分、goroutine 或被调用的方法应该在调用者的用户帐户下运行。

我做了一些研究,似乎在 Go 中我们可以将单个 goroutine 粘贴到当前线程,但我看不出如何创建一个新线程,然后将一个 goroutine 附加到该线程。

标签: gothreadpoolgoroutine

解决方案


不可能以不同的用户身份运行 goroutine 或方法,因为它们都在与父进程相同的上下文中运行。Goroutines 相当于绿色线程,甚至不必为每个例程生成适当的 OS 线程。

这个答案也可能取决于操作系统,但我认为这也不适用于 Windows。

如果您通过cmd包生成另一个进程,那么这个答案可能很有用 在另一个用户下通过 os/exec 运行外部命令


推荐阅读