gpt4 book ai didi

linux - Unix 系统的 SetThreadAffinityMask

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:13 24 4
gpt4 key购买 nike

我想阻止一个线程在多个核心上执行,我不希望当某个线程在一个核心上执行时,它不应该被安排在另一个核心上执行。

我使用 x86 指令 RDTSC 来生成时间戳。当从不同的 CPU 内核调用此指令时,可能会使用不同的时间戳计数器,并且由于不同的计数器未通过 CPU 内核同步,因此可能会出现不一致的结果。

在 Windows 上有一个函数可以强制这种行为:

DWORD_PTR WINAPI SetThreadAffinityMask(
__in HANDLE hThread,
__in DWORD_PTR dwThreadAffinityMask
);

Sets a processor affinity mask for the specified thread.

MSDN link

unix 系统有类似的东西吗?

最佳答案

在 Solaris 中,您可以使用 CPU 绑定(bind),它可以应用于单个线程、单个进程、一组进程或一个区域中的所有进程。参见 processor_bindpbind .

关于linux - Unix 系统的 SetThreadAffinityMask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6000978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com