Теперь основной поток называется: Основной Поток Теперь приоритет: AboveNormal

Следует, однако, быть очень внимательным, выполняя операции с основным потоком. Так, если добавить в конце методаMain() следующий вызов методаJoin():

Thrd.Join ();

программа никогда не завершится, поскольку она будет ожидать окончания основного потока!

Дополнительные средства многопоточной обработки, внедренные в версии .NET Framework 4.0

В версии .NET Framework 4.0 внедрен ряд новых средств многопоточной обработки, которые могут оказаться весьма полезными. Самым важным среди них является новая система отмены. В этой системе поддерживается механизм отмены потока простым, вполне определенным и структурированным способом. В основу этого механизма положено понятиепризнака отмены, с помощью которого указывается состояние отмены потока. Признаки отмены поддерживаются в классеCancellationTokenSourceи в структуреCancellationToken.Система отмены полностью интегрирована в новую библиотеку распараллеливания задач (TPL), и поэтому она подробнее рассматривается вместе с TPL в главе 24.

В классSystem. Threadingдобавлена структураSpinWait,предоставляющая методыSpinOnce () иSpinUntil (), которые обеспечивают более полный контроль над ожиданием в состоянии занятости. Вообще говоря, структураSpinWaitоказывается непригодной для однопроцессорных систем. А для многопроцессорных систем она применяется в цикле. Еще одним элементом, связанным с ожиданием в состоянии занятости, является структураSpinLock,которая применяется в цикле ожидания до тех пор, пока не станет доступной блокировка. В классThreadдобавлен методYield(),который просто выдает остаток кванта времени, выделенного потоку. Ниже приведена общая форма объявления этого метода.

public static bool Yield()

Этот метод возвращает логическое значениеtrue,если происходит переключение контекста. В отсутствие другого потока, готового для выполнения, переключение контекста не произойдет.

Рекомендации по многопоточному программированию

Перейти на страницу:

Похожие книги