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
to
> restrict all threads in a program to the same CPU?
>
> --Beman

Yup.

From MSDN:

SetThreadAffinityMask
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
on.

DWORD_PTR SetThreadAffinityMask (
  HANDLE hThread, // handle to thread
  DWORD_PTR dwThreadAffinityMask // thread affinity mask
);
Parameters
hThread
[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.

dwThreadAffinityMask
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
mask.

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.

Requirements
  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 acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk