Có cách nào để đảm bảo rằng goroutine sẽ chỉ chạy trong một chuỗi hệ điều hành cụ thể không? Ví dụ, khi các hoạt động GUI phải chạy trong luồng GUI, nhưng có thể có nhiều goroutines đang chạy mã GUI.Buộc goroutines vào cùng một luồng
GOMAXPROCS(1)
thực hiện công việc về mặt kỹ thuật, nhưng điều đó đánh bại mục đích đa luồng.
LockOSThread()
cũng hoạt động, nhưng điều đó cũng ngăn không cho bất kỳ goroutine nào khác chạy trong chuỗi đó.
Có cách nào để làm điều này, hoặc phải tất cả mọi thứ yêu cầu cùng một luồng cũng chạy trong cùng một goroutine?
-1 Câu trả lời của bạn cho "Có cách nào để đảm bảo rằng goroutine sẽ chỉ chạy trong một chuỗi hệ điều hành cụ thể không?" là "viết một Goroutine chạy trong thread GUI"? Làm thế nào điều này nghĩa vụ phải giúp tôi? –
Bạn đã chỉ ra rằng LockOSThread cho phép bạn khóa goroutine thành một chuỗi cụ thể. Đơn giản chỉ cần làm như vậy cho thread GUI. –
Điều đó cho phép bạn khóa goroutine thành luồng * hiện tại *, chứ không phải một chuỗi cụ thể tùy ý. – robx