我将会写作为进程之间的超高体积的消息配送的多线程共享的存储器邮件系统。该消息将源自从Web服务器的工作线程。我想利用这个CPU缓存位置是在同一个CPU共享内核。这样,当醒来时对这个IPC系统的接收端的工作线程,我醒来在同一CPU上的螺纹。

我需要为Linux(POSIX prefferably在genaral)和Windows API调用和bitmasking我需要做什么来提取,这将让我的分类执行线程ID的信息 - 从说,上下文线程 - 使用下面的结构:

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