我正在对NUMA系统进行一些实验。我在多线程/双线程c程序中共享一个缓存行(int64)变量。当我在同一节点上运行两个线程时,程序比在两个不同的NUMA节点上运行/绑定这些线程花费的时间多出近50%。我认为它应该是另一种方式,因为它们共享数据,如果它们在同一节点上运行,它们应该更快完成。
我在这里遗漏了什么吗?
pthread_mutex_lock (&shared_mutex);
if (thinfo->thread_num == 1)
shared_var++;
else
shared_var--;
pthread_mutex_unlock (&shared_mutex);