Identify processor (core) is used by specific thread

DenisL picture DenisL · Jul 29, 2010 · Viewed 7.9k times · Source

I would like to know if it is possible to identify physical processor (core) used by thread with specific thread-id?

For example, I have a multithreaded application that has two (2) threads (thread-id = 10 and thread-id = 20, for instance). I run the application on a system that has a dual core processor (core 1 and core 2). So, how do I to get core number used by thread with thread-id = 20?

P.S. Windows platforms.

Thank you,

Denis.

Answer

Patrick picture Patrick · Jul 29, 2010

Unless you use thread-affinity, threads are not assigned to specific cores. With every time slice, the thread can be executed on different cores. This means that if there would be a function to get the core of a thread, by the time you get the return value, there's a big chance that the thread is already executing on another core.

If you are using thread-affinity, you could take a look at the Windows thread-affinity functions (http://msdn.microsoft.com/en-us/library/ms684847%28v=VS.85%29.aspx).