Проблемы понимания очереди, параллелизма и потоков - PullRequest
1 голос
/ 17 февраля 2011

У меня есть вопрос об использовании очередей и потоков. Я уже провел исследования, но мне не удается понять общие функции.

Что я хочу сделать: у меня есть класс с именем "mTask", в котором есть свойства и метод с именем "StartmTask". Когда я создаю новый mTask, я добавляю его в список.

И я хочу обработать mTask, когда в списке есть mTask. (Я должен запустить задачу на каждом свободном процессоре компьютера)

Я не понимаю, как мне поступить ... Я думаю, что это "просто", но я на самом деле потерян. Кто-нибудь сможет объяснить это как можно проще?

Большое спасибо, я продолжаю поиск, если я не достаточно ясен, или если вам нужна дополнительная информация, не стесняйтесь спрашивать.

Yowan

1 Ответ

0 голосов
/ 17 февраля 2011

Я думаю, что, вероятно, лучшим и самым простым решением было бы поместить mTask в ThreadPool вместо списка, который вы должны наблюдать.

Взгляните на метод

ThreadPool.QueueUserWorkItem

Пример:

ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), )mTask);

private void DoWork(object o)
{
    task = o;
}

Если вы используете его без каких-либо настроек, потоки назначаются для каждого процессора. Вам не нужно заботиться об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...