标签: setthreadaffinitymask

Java线程亲和力

有没有人知道如何将Java进程中的各个线程锁定到特定的CPU内核(在Linux上)?我在C中完成了这个,但是在Java中找不到如何做到这一点.我的直觉是这需要一个JNI电话,但我希望这里有人可能有一些见解或者可能以前做过.

谢谢!

java multithreading scheduling setthreadaffinitymask

61
推荐指数
2
解决办法
3万
查看次数

在linux内核模块中设置线程关联

因为大多数C程序员都知道libc为线程cpu亲和性调优提供了一个非可移植的函数(pthread_attr_setaffinity_np()).但是,我真正不知道的是在实现内核模块时如何做到这一点.任何提及或重定向到一些真实示例的答案都会非常有用.

kernel-module setthreadaffinitymask

5
推荐指数
1
解决办法
3420
查看次数

SethreadAffinityMask()正确用法?

我有1500个线程..我希望它们在12个处理器上运行...为此我打电话 SetThreadAffinityMask(GetCurrentThread(),1<<(threadnum%numprocessors)); 其中numprocessors = 12.这是正确使用面具吗?它需要是可扩展的,即如果我希望它只在11个处理器上运行,那么 SetThreadAffinityMask(GetCurrentThread(),1<<(threadnum%numprocessors));numprocessors = 11.

c++ multithreading affinity setthreadaffinitymask

1
推荐指数
1
解决办法
469
查看次数

Windows.h线程关联

下面的代码确实编译并运行,除了输出不是我期望的那样.我希望程序创建n个线程(取决于可用的多核数量)并运行在程序结束时找到的简单例程进行输出

"测试"

接下来是1-10.我得到的是一个输出,它写了一些数字,但它最多不超过两个,并且函数threadmain似乎不完全在一个线程上运行,但它有点输出测试:012在其他线程.我知道多线程会破坏输出,但我应该在屏幕的某处看到数字3,4,5,6,7,8,9,但它没有显示出来.

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <cmath>
#include <iostream>

HANDLE *m_threads = NULL;
static DWORD_PTR WINAPI threadMain(void* p);

DWORD_PTR GetNumCPUs()
{
  SYSTEM_INFO m_si = {0, };
  GetSystemInfo(&m_si);
  return (DWORD_PTR)m_si.dwNumberOfProcessors;
}

CRITICAL_SECTION g_crit_sec;
static int g_start = 0;

int main(int argc, char **args)
{
  DWORD_PTR c = GetNumCPUs();

  m_threads = new HANDLE[c];

  InitializeCriticalSectionAndSpinCount(&g_crit_sec, 0x80000400);

  for(DWORD_PTR i = 0; i < c; i++)
  {
    DWORD_PTR m_id = 0;
    DWORD_PTR m_mask = 1 << i;

    m_threads[i] = CreateThread(NULL, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ windows multithreading setthreadaffinitymask

1
推荐指数
1
解决办法
1277
查看次数