2015-02-06 3 views
0

goroutines가 Go의 동시성을 처리하는 방법이라는 것을 잘 알고 있지만 정규적인 멀티 스레드 서버와 레벨 트리거 epoll 및 에지 트리거 epoll을 사용하는 서버를 비교하는 테스트를 실행하고 있습니다. epoll을 만드는 방법을 알아낼 수는 있지만, 수동으로 스레드를 생성하는 방법에 대해서는 안녕하고 낮게 검색했습니다.Go에서 스레드를 수동으로 만들려면 어떻게해야합니까?

+1

Go 런타임 *은 명시 적으로 낮은 수준의 OS 스레드를 숨기고 외부 C 라이브러리와의보다 나은 통합을 허용하는 유일한 목적으로 만 일부 컨트롤을 노출합니다 (및 syscalls). 이 아이디어가 Go 런타임의 주요 목적을 무효로하기 때문에 (예를 들어 Go 런타임에 자신의 저수준 OS 관리를 사용하는 것) 작업하지 않으려 고합니다 (미세 조정 된 goroutine 예약 등). 내 말은, 당신은 다른 런타임을 만들고, Go로 작업하지 않을 것입니다. – kostix

+0

예를 들어, C 코드 ('cgo' 또는 기타)를 통해 C 코드를 호출하고 폴링 등을 사용하여 새로운 pthread를 생성하는 등의 작업을 수행 할 수 있습니다. 실제로 실행하지는 않습니다. 코드 이동. 그래서 목적은 무엇입니까? – kostix

+0

단지 호기심을 충족시키는 것일까 요? 질문은 이론적으로 들립니다. –

답변

1

당신은 그렇게 할 수 없습니다. Go에서는 이런 종류의 것을 제어 할 수 없습니다.

+0

... 불필요한 세부 사항을 드러내 기 때문에 동시성은 전통적으로 * 하드 *로 간주된다는 점에서 이것은 매우 좋은 의미입니다. CSP는 프로그래밍 언어가 어셈블리 코드보다 깨끗한 추상화를 제공하는 것과는 달리 동시성에 대한 명확한 추상화를 제공합니다. –

관련 문제