|
|
||
3. Условная замена значения переменной |
||
Для условной замены значения переменной в операционных системах Windows используется блокирующая функция InterlосkedСоmpareExchange, которая имеет следующий прототип: Эта функция предназначена для замены значения переменной, адрес которой задан параметром Destination, на новое значение, которое задано параметром Exchange, при условии, что старое значение переменной равно значению, заданному параметром comperand. Значение, возвращаемое функцией InterlockedCompareExchange, равно старому значению изменяемой переменной. Замечание: Адреса всех переменных, используемых функцией InterlockedCompareExchange, должны быть выровнены на границу слова, т. е. должны быть кратны 32. В листинге 7.2 приведен пример использования функции InterlockedCompareExchange для условной замены значения переменной. Эта программа отличается от программы из листинга 7.1 только тем, что поток producer будет помещать новое число в контейнер только в том случае, если поток consumer освободил контейнер от старого числа. Листинг 7.2. Пример использования функции InterlockedCompareExchange |
||
#include <windows.h> volatile long n; void producer() void consumer() int main() |
||
|
||
3 |