2014-11-05 3 views
0

GLEWMX 컨텍스트를 사용하는 플러그인을 작성 중입니다. 플러그인은 스레드 ID (1) 아래에 GLEWMX 컨텍스트를로드합니다. 그런 다음 스레드 ID (2)에서 해당 작업을 실행합니다. 두 스레드 ID에 액세스 할 수 있습니다.실행중인 스레드에 액세스하기

std : thread를 사용하여 활성 스레드를 thread (1)로 전환해야 해당 컨텍스트에서 액세스하고 실행할 수 있습니까? 어떻게해야합니까?

답변

1

예 아니요. 일부 라이브러리는 실제로 단일 스레드에서 실행되도록 제한되며 GLEWMX가 그러한 스레드 중 하나라고 가정합니다. 실제로 스레드 2에서 호출하지 않아야 함을 의미합니다.

그러나 스레드 1에서 수행해야 할 작업이 있으면 "활성 스레드"를 전환 할 수 없습니다. 최신 컴퓨터에서는 어쨌든 몇 가지 활성 스레드가 있으므로 스레드 2가 활성 상태라는 사실은 스레드 1이 수동적이라는 것을 의미하지 않습니다.

올바른 해결책은 스레드 1에 대한 스레드 안전 작업 대기열을 만드는 것입니다. 스레드 2는 작업을 넣을 수 있으며 준비가되면 스레드 1은 작업을 선택합니다. 불행히도이 표준 라이브러리를 지원하지 않습니다, 당신은 하나를 함께 cobble해야합니다. 스레드 1에 std::condition_variable.wait을 사용하십시오.

+0

내 프로그램에서 발생하는 문제는 Rhino에서 이러한 모든 스레드를 생성하는 것이며 스레드 ID에 대한 액세스 권한 만 가지고 있습니다. 작업 대기열, ... 그래서 그냥 첫 번째 스레드에서 뭔가를 호출하고 생각했지만, 그것은 좋은 응답 –

관련 문제