【发布时间】:2015-12-29 11:13:44
【问题描述】:
我在 c 中创建了一个应用程序,它创建了 4 个线程。如何通过终端和代码检查哪个线程在哪个核心上运行。
【问题讨论】:
-
你试过
pthread_getaffinity_np()吗? man7.org/linux/man-pages/man3/pthread_setaffinity_np.3.html -
通常,操作系统将线程分配到不同的 CPU,因此它现在运行的任何 CPU 可能是也可能不是它在毫秒内运行的同一个 CPU。但是,您可以使用 Linux 支持的 POSIX 线程来控制线程关联,或者您可以使用例如像
htop这样的工具,用于将线程/进程分配给 CPU。 -
@SergeiKulik pthread_getaffinity_np() 总是返回 0,即使我使用 pthread_setaffinity_np() 设置亲和力。
-
手册页对那个特定的返回值有什么要说的?
标签: linux multithreading pthreads affinity