Boost logo

Boost :

From: dmoore_at_[hidden]
Date: 2001-09-07 11:08:15

> Win 2K question: Is there an easy way on a multi-processor machine
> restrict all threads in a program to the same CPU?
> --Beman


From MSDN:

The SetThreadAffinityMask function sets a processor affinity mask for
a specified thread.

A thread affinity mask is a bit vector in which each bit represents
the processors that a thread is allowed to run on.

A thread affinity mask must be a proper subset of the process
affinity mask for the containing process of a thread. A thread is
only allowed to run on the processors its process is allowed to run

DWORD_PTR SetThreadAffinityMask (
  HANDLE hThread, // handle to thread
  DWORD_PTR dwThreadAffinityMask // thread affinity mask
[in] Handle to the thread whose affinity mask is to be set.
Windows NT/2000: This handle must have the THREAD_SET_INFORMATION
access right associated with it. For more information, see Thread
Security and Access Rights.

Windows NT/2000: [in] Specifies an affinity mask for the thread.
Windows 95/98: [in] This value must be 1.

Return Values
If the function succeeds, the return value is nonzero.

Windows NT/2000: The return value is the thread's previous affinity

Windows 95/98: The return value is 1. To succeed, hThread must be
valid and dwThreadAffinityMask must be 1.

If the function fails, the return value is zero. To get extended
error information, call GetLastError.

  Windows NT/2000: Requires Windows NT 3.5 or later.
  Windows 95/98: Requires Windows 95 or later.
  Header: Declared in Winbase.h; include Windows.h.
  Library: Use Kernel32.lib.

Boost list run by bdawes at, gregod at, cpdaniel at, john at