提问人:Kudor 提问时间:11/16/2023 最后编辑:user17732522Kudor 更新时间:11/16/2023 访问量:110
线程在什么指令之后迁移到另一个逻辑处理器?
After what instruction the thread migrates to another logical processor?
问:
我想知道在程序执行流程中的哪个点(更准确地说,在什么指令之后),线程从逻辑处理器 0 迁移到逻辑处理器 1。我用来设置所需的逻辑处理器。SetProcessAffinityMask()
我尝试通过所有线程设置在逻辑处理器 0 上运行,并在线程函数内部,当线程运行时,更改关联掩码并再次调用,以使线程在逻辑处理器 1 上运行。它有效,因为我使用的打印件使用 .我假设线程在我使用 的第二次调用后更改了逻辑处理器,但我不确定。SetProcessAffinityMask()
SetProcessAffinityMask()
GetCurrentProcessorNumber()
SetProcessAffinityMask()
代码如下:
#include <Windows.h>
#include <iostream>
#include <pthread.h>
using namespace std;
void* tmgr_function(void* arg)
{
HANDLE process = GetCurrentProcess();
DWORD_PTR processAffinityMask = 1;
BOOL success = SetProcessAffinityMask(process, processAffinityMask);
printf("Thread runs on core %d\n", GetCurrentProcessorNumber());
processAffinityMask = 2;
success = SetProcessAffinityMask(process, processAffinityMask);
printf("Thread runs on core %d\n", GetCurrentProcessorNumber());
return NULL;
}
int main()
{
pthread_t thread;
int arg;
long sum = 0;
pthread_create(&thread, NULL, tmgr_function, &arg);
pthread_join(thread, NULL);
return 0;
}
答: 暂无答案
评论
SetProcessAffinityMask