2010-01-11 5 views
1

프로세스간에 매우 많은 양의 메시지를 전달하기 위해 멀티 스레드 공유 메모리 메시징 시스템을 작성하려고합니다. 메시지는 웹 서버의 작업자 스레드에서 발생합니다. 나는 같은 CPU 공유에 코어가있는 CPU 캐시 지역을 이용하려고한다. 그래서 내가이 IPC 시스템의 수신단에서 작업자 스레드를 깨울 때, 나는 같은 CPU에서 스레드를 깨운다.CPU 코어 스레딩 분류 기능

Linux (prearableably POSIX genaral) 및 API 호출 및 스레드의 컨텍스트에서 실행 스레드 ID를 분류 할 정보를 추출 할 필요가 bitmasking - 다음 구조체를 사용합니다 :

struct thread_core_id 
{ 
    uint16_t cpu_Id; 
    uint16_t core_Id; 
}; 

두 플랫폼 모두의 기능을 크게 높이 평가할 것입니다. 시스템 호출 (컨텍스트 스위치)없이이 작업을 수행 할 수 있기를 희망합니다.

- 편집 -

내가 지금 86에 주력하고 있습니다 만, 다른 아키텍처뿐만 아니라 유용 할 것이다.

답변

1

Linux의 경우 특히 /proc/cpuinfo/sys/devices/system/cpu/cpu*/cache 중에서 필요한 정보를 가져와 sched_{s|g}etaffinity() 호출과 함께 사용할 수 있습니다. What Every Programmer Should Know About Memory (아직 섹션 5.3을 둘러 보지 않은 경우)을 살펴보십시오.

+0

(+1) 기사 및 도움말 전화와 기사를 읽었습니다. –

+0

지금까지 답변 : D –

관련 문제