문제

프로세스간에 매우 대량의 대량 메시지 전달을위한 멀티 스레드 공유 메모리 메모리 시스템을 작성할 것입니다. 메시지는 웹 서버의 작업자 스레드에서 발생합니다. 동일한 CPU 공유에서 코어를 사용하는 CPU 캐시 지역을 이용하고 싶습니다. 이 IPC 시스템의 수신 끝에 작업자 스레드를 깨울 때 동일한 CPU에서 스레드를 깨우십시오.

나는 Linux (Genaral에서 preferly posix)와 Windows가 필요합니다. :

struct thread_core_id
{
    uint16_t cpu_Id;
    uint16_t core_Id;
};

두 플랫폼의 기능은 크게 높이 평가 될 것입니다. 나는 이것이 시스템 호출 (즉, 컨텍스트 스위치)없이 수행 될 수 있기를 바라고 있습니다.

-- 편집하다 --

현재 X86에 중점을두고 있지만 다른 아키텍처도 유용 할 것입니다.

도움이 되었습니까?

해결책

Linux의 경우 특히 필요한 정보를 얻을 수 있어야합니다. /proc/cpuinfo 그리고 /sys/devices/system/cpu/cpu*/cache 그리고 그것을 사용하십시오 sched_{s|g}etaffinity() 전화. 보세요 모든 프로그래머가 기억에 대해 알아야 할 것, 아직 5.3 절 주위에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top