NT 기반 Windows OS에서 특정 스레드를 강제로 (즉, 적어도 사용자 코드를 중단하면서) 특정 스레드를 강제로 호출하도록하는 APC 변형 또는 다른 기술이 있습니까? 경계 가능한 대기를 입력 하시겠습니까?경고 대기를 기다리지 않고 대상 스레드를 인터럽트하는 APC 변형이 있습니까?
이 모든 종류의 동시성 문제가 발생할 수 있음을 알고 있습니다. 내가 그것을 사용하고자하는 주된 목표는 다른 스레드 (그리고 완료를 기다리는 중)에서 프로세서 레벨 메모리 장벽을 강제하는 것입니다.이 방법을 얻는 다른 방법이 도움이 될 수 있습니다. 그러나 이것이 가능하면 여전히 궁금합니다.)
재미있는 접근 방식, 조금 두렵다면. 그런 맥락에서'ReleaseSemaphore'를 호출하는 것이 안전한가요? 내가 한 트리거링 쓰레드와 통신 할 수 있어야합니다. 이상적으로 커널이 한 번의 호출로 모든 것을 처리하도록하고 싶습니다. - Suspend -> Resume은 두 개 이상의 IPI가 필요할 수 있습니다 ... – bdonlan
예,이 컨텍스트에서 ReleaseSemaphore를 호출 할 수 있습니다. 이는 거의 직접 syscall로 변환되기 때문입니다. 나는 RCU를 구현하는 더 좋은 방법을 생각할 수있다. 예를 들어, 쓰레드 당 데이터 구조 ('TlsGetVAlue')가 있습니다. – John