1

我将编写一个多线程共享内存消息传递系统,用于进程之间的超大容量消息传递。消息将来自网络服务器的工作线程。我想利用同一 CPU 共享上的内核的 CPU 缓存位置。因此,当我在这个 IPC 系统的接收端唤醒一个工作线程时,我会唤醒同一个 CPU 上的一个线程。

我需要Linux(最好是一般的POSIX)和windows API调用和我需要做的位掩码来提取信息,这些信息将让我使用以下结构从所述线程的上下文中对正在执行的线程ID进行分类:

struct thread_core_id
{
    uint16_t cpu_Id;
    uint16_t core_Id;
};

两个平台的功能将不胜感激。我希望这可以在没有系统调用的情况下完成——即上下文切换。

- 编辑 -

我目前专注于 x86,但其他架构也会很有用。

4

1 回答 1

1

特别是对于 Linux,您应该能够从调用中获取所需的信息/proc/cpuinfo并将/sys/devices/system/cpu/cpu*/cache其用于sched_{s|g}etaffinity()调用。如果您还没有,请参阅第 5.3 节的每个程序员应该了解的关于内存的知识。

于 2010-01-11T19:41:35.487 回答