Net framework 5, а также среды Visual Studio 2012 и C#


Простые вычислительные операции



Download 6,27 Mb.
Pdf ko'rish
bet558/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   554   555   556   557   558   559   560   561   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Простые вычислительные операции
Для добавления в очередь пула потоков асинхронных вычислительных операций 
обычно вызывают один из следующих методов класса 
ThreadPool
:
static Boolean QueueUserWorkItem(WaitCallback callBack);
static Boolean QueueUserWorkItem(WaitCallback callBack, Object state);


749
Простые.вычислительные.операции
Эти методы ставят «рабочий элемент» вместе с дополнительными данными 
состояния в очередь пула потоков и сразу возвращают управление приложению. 
Рабочим элементом называется указанный в параметре 
callback
метод, который 
будет вызван потоком из пула. Этому методу можно передать один параметр 
через аргумент 
state
(данные состояния). Без этого параметра версия метода 
QueueUserWorkItem
передает методу обратного вызова значение 
null
. Все заканчи-
вается тем, что один из потоков пула обработает рабочий элемент, приводя к вызову 
указанного метода. Создаваемый метод обратного вызова должен соответствовать 
делегату 
System.Threading.WaitCallback
, который определяется так:
delegate void WaitCallback(Object state);
ПриМеЧание
Сигнатуры.делегатов.WaitCallback.и.TimerCallback.(о.них.мы.поговорим.в.этой.главе),.
а.также.делегата.ParameterizedThreadStart.(он.упоминался.в.главе.25).совпадают .
Если.вы.определяете.метод,.совпадающий.с.этой.сигнатурой,.он.может.быть.вызван.
через.метод.ThreadPool QueueUserWorkItem.при.помощи.объекта.System Threading 
Timer.или.System Threading Thread 
Пример процедуры асинхронного вызова метода потоком из пула:
using System;
using System.Threading;
public static class Program {
public static void Main() {
Console.WriteLine("Main thread: queuing an asynchronous operation");
ThreadPool.QueueUserWorkItem(ComputeBoundOp, 5);
Console.WriteLine("Main thread: Doing other work here...");
Thread.Sleep(10000); // Имитация другой работы (10 секунд)
Console.WriteLine("Hit to end this program...");
Console.ReadLine();
}
// Сигнатура метода совпадает с сигнатурой делегата WaitCallback
private static void ComputeBoundOp(Object state) {
// Метод выполняется потоком из пула
Console.WriteLine("In ComputeBoundOp: state={0}", state);
Thread.Sleep(1000); // Имитация другой работы (1 секунда)
// После возвращения управления методом поток
// возвращается в пул и ожидает следующего задания
}
}
Результат компиляции и запуска этого кода:
Main thread: queuing an asynchronous operation
Main thread: Doing other work here...
In ComputeBoundOp: state=5


750
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   554   555   556   557   558   559   560   561   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish