【发布时间】:2014-06-16 02:54:24
【问题描述】:
我目前正在使用具有两个 CPU 的 NUMA 系统。两个 CPU 的内存访问时间不一样。
我已经使用PTHREAD_SETAFFINITY_NP 将线程分配给特定的 CPU:
int stick_this_thread_to_core(int core_id) {
int num_cores = sysconf(_SC_NPROCESSORS_ONLN);//number of processors
if (core_id < 0 || core_id >= num_cores)
return EINVAL;
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(core_id, &mask);
pthread_t current_thread = pthread_self();
return pthread_setaffinity_np(current_thread, sizeof(cpu_set_t), &mask);
}
我的问题是,它是否也限制了线程的内存分配?比如我malloc在CPU-1运行的线程中,内存会不会只分配在CPU-1的内存中?
【问题讨论】:
标签: c multithreading memory memory-management