Пул потоков
От: zoom-zoom  
Дата: 05.12.11 13:17
Оценка:
Никогда не работал с потоками, нужна ваша помощь!
Требуется реализация класса на языке C#, аналогичного FixedThreadPool в Java, со следующими требованиями:
* В конструктор этого класса должно передаваться количество потоков, которые будут выполнять задачи.
* Интерфейс класса должен предоставлять методы: boolean execute(Task task, Priority priority) и void stop()
* Интерфейс Task должен содержать один метод: void execute(), который вызывается в произвольном потоке.
* Тип Priority — это перечисление из трёх приоритетов: HIGH, NORMAL, LOW. При этом во время выбора следующего задания из очереди действуют такие правила: на три задачи с приоритетом HIGH выполняется одна задача с приоритетом NORMAL, задачи с приоритетом LOW не выполняются, пока в очереди есть хоть одна задача с другим приоритетом.
* До вызова метода stop() задачи ставятся в очередь на выполнение и метод boolean execute(Task task, Priority priority) сразу же возвращает true, не дожидаясь завершения выполнения задачи; а после вызова stop() новые задачи не добавляются в очередь на выполнение, и метод boolean execute(Task task, Priority priority) сразу же возвращает false.
* Метод stop() ожидает завершения всех текущих задач (не очищая очередь).
Re: Пул потоков
От: Aen Sidhe Россия Просто блог
Дата: 05.12.11 13:22
Оценка:
Здравствуйте, zoom-zoom, Вы писали:

ZZ>Никогда не работал с потоками, нужна ваша помощь!

ZZ>Требуется реализация класса на языке C#, аналогичного FixedThreadPool в Java, со следующими требованиями:


http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: Пул потоков
От: Lloyd Россия  
Дата: 05.12.11 13:24
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

ZZ>>Требуется реализация класса на языке C#, аналогичного FixedThreadPool в Java, со следующими требованиями:


AS>http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx


И что из перечисленого ThreadPool умеете?
Re[3]: Пул потоков
От: Aen Sidhe Россия Просто блог
Дата: 05.12.11 13:28
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Aen Sidhe, Вы писали:


ZZ>>>Требуется реализация класса на языке C#, аналогичного FixedThreadPool в Java, со следующими требованиями:


AS>>http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx


L>И что из перечисленого ThreadPool умеете?


Всё, кроме Stop() из коропки. Всё со стопом с допилом.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[4]: Пул потоков
От: Lloyd Россия  
Дата: 05.12.11 13:30
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

L>>И что из перечисленого ThreadPool умеете?


AS>Всё, кроме Stop() из коропки. Всё со стопом с допилом.


Научите как пользоваться приоритетами в стандартном ThreadPool-е?
Re[5]: Пул потоков
От: Aen Sidhe Россия Просто блог
Дата: 05.12.11 13:32
Оценка: 1 (1)
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Aen Sidhe, Вы писали:


L>>>И что из перечисленого ThreadPool умеете?


AS>>Всё, кроме Stop() из коропки. Всё со стопом с допилом.


L>Научите как пользоваться приоритетами в стандартном ThreadPool-е?


Thread,CurrentThread.Priority = ...
С уважением, Анатолий Попов.
ICQ: 995-908
Re[6]: Пул потоков
От: Lloyd Россия  
Дата: 05.12.11 13:35
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

L>>Научите как пользоваться приоритетами в стандартном ThreadPool-е?


AS>Thread,CurrentThread.Priority = ...


Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.
А во-вторых, хотелось бы узнать как приведенный код можно применить к поставленной задаче.
Re[7]: Пул потоков
От: Aen Sidhe Россия Просто блог
Дата: 05.12.11 13:42
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Aen Sidhe, Вы писали:


L>>>Научите как пользоваться приоритетами в стандартном ThreadPool-е?


AS>>Thread,CurrentThread.Priority = ...


L>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


Ну это не мне надо, а топикстартеру.

L>А во-вторых, хотелось бы узнать как приведенный код можно применить к поставленной задаче.


Из WaitCallback вызываем, получаем нужный приоритет. Вуаля.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[7]: Пул потоков
От: zoom-zoom  
Дата: 05.12.11 13:43
Оценка:
Это пока все, что я смог разобрать в задании, не пойму, что нужно написать в Main и как выставлять эти приоритеты?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FixedThreadPool
{
public interface Task
{
void execute();
}
public interface interfaceThreadPool
{
enum Priority
{
HIGH, NORMAL, LOW
}
bool execute(Task task, Priority priority);
void stop();
}
public class ThreadPool : interfaceThreadPool
{
public int countTread = 0;
public ThreadPool(int countTread)
this.countTread = countTread;
}
class Program
{
static void Main(string[] args)
{
}
}
}
Re[8]: Пул потоков
От: Lloyd Россия  
Дата: 05.12.11 13:45
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

L>>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


AS>Ну это не мне надо, а топикстартеру.


топикстартеру нужен свой кастомный threadpool, а вы ему предлагаете решение, которое некорректно.

L>>А во-вторых, хотелось бы узнать как приведенный код можно применить к поставленной задаче.


AS>Из WaitCallback вызываем, получаем нужный приоритет. Вуаля.


И как это поможет?
На всякий случай напоминаю, что хотел топикстартер: "на три задачи с приоритетом HIGH выполняется одна задача с приоритетом NORMAL".
Re[9]: Пул потоков
От: Aen Sidhe Россия Просто блог
Дата: 05.12.11 13:47
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Aen Sidhe, Вы писали:


L>>>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


AS>>Ну это не мне надо, а топикстартеру.


L>топикстартеру нужен свой кастомный threadpool, а вы ему предлагаете решение, которое некорректно.


Судя по всему, топикстартер делает лабу/задание к собеседованию.

L>>>А во-вторых, хотелось бы узнать как приведенный код можно применить к поставленной задаче.


AS>>Из WaitCallback вызываем, получаем нужный приоритет. Вуаля.


L>И как это поможет?

L>На всякий случай напоминаю, что хотел топикстартер: "на три задачи с приоритетом HIGH выполняется одна задача с приоритетом NORMAL".

А, гм. Тогда я мудак, да. Не увидел этого требования. Но и тогда это решается семафорами и прочим.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[7]: Пул потоков
От: hardcase Пират http://nemerle.org
Дата: 05.12.11 13:51
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


А что такого?
using(new ThreadPriorityScope(ThreadPriority.AboveNormal))
{
 ...
}

где ThreadPriorityScope что-то типа:
public sealed class ThreadPriorityScope : IDisposable
{
  public ThreadPriorityScope(ThreadPriority newPriority)
  {
    _originalPriority = Thread.CurrentThread.Priority;
    Thread.CurrentThread.Priority = newPriority;
  }
  
  public void Dispose()
  {
    Thread.CurrentThread.Priority = _originalPriority;
  }
  
  private readonly ThreadPriority _originalPriority;
}
/* иЗвиНите зА неРовнЫй поЧерК */
Re[8]: Пул потоков
От: Lloyd Россия  
Дата: 05.12.11 13:52
Оценка:
Здравствуйте, hardcase, Вы писали:

L>>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


H>А что такого?


А то, что документация не рекомендует.
Re[8]: Пул потоков
От: Lloyd Россия  
Дата: 05.12.11 13:53
Оценка:
Здравствуйте, hardcase, Вы писали:

L>>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


H>А что такого?


Не говоря уж о том, что это не решает поставленной задачи.
Re: Пул потоков
От: Divineshadow  
Дата: 05.12.11 13:57
Оценка: :)
Тестовое задание для "Связного" делаем?
Re[10]: Пул потоков
От: zoom-zoom  
Дата: 05.12.11 14:02
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Здравствуйте, Lloyd, Вы писали:


L>>Здравствуйте, Aen Sidhe, Вы писали:


L>>>>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


AS>>>Ну это не мне надо, а топикстартеру.


L>>топикстартеру нужен свой кастомный threadpool, а вы ему предлагаете решение, которое некорректно.


AS>Судя по всему, топикстартер делает лабу/задание к собеседованию.


ВЫ попали в точку!!! Я раньше писал простые Win-приложения на C#, а в данной задаче требуется знания профи.

L>>>>А во-вторых, хотелось бы узнать как приведенный код можно применить к поставленной задаче.


AS>>>Из WaitCallback вызываем, получаем нужный приоритет. Вуаля.


L>>И как это поможет?

L>>На всякий случай напоминаю, что хотел топикстартер: "на три задачи с приоритетом HIGH выполняется одна задача с приоритетом NORMAL".

AS>А, гм. Тогда я мудак, да. Не увидел этого требования. Но и тогда это решается семафорами и прочим.
Re[11]: Пул потоков
От: Aen Sidhe Россия Просто блог
Дата: 05.12.11 14:04
Оценка: +1
Здравствуйте, zoom-zoom, Вы писали:

L>>>>>Во-первых, менять приоритеты потоков threadpool-а — это, гм, дурной тон.


AS>>>>Ну это не мне надо, а топикстартеру.


L>>>топикстартеру нужен свой кастомный threadpool, а вы ему предлагаете решение, которое некорректно.


AS>>Судя по всему, топикстартер делает лабу/задание к собеседованию.


ZZ>ВЫ попали в точку!!! Я раньше писал простые Win-приложения на C#, а в данной задаче требуется знания профи.


http://lmgtfy.com/?q=custom+thread+pool+c%23

Вторая ссылка очень подробна.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: Пул потоков
От: zoom-zoom  
Дата: 05.12.11 14:05
Оценка: :))
Здравствуйте, Divineshadow, Вы писали:

D>Тестовое задание для "Связного" делаем?


От Вас ничего не скроешь! Надеюсь Вы не из Связного? ))))
Хотя может лучше и из Связного и поможет поможете с такой задачей. )
Re[3]: Пул потоков
От: Divineshadow  
Дата: 05.12.11 14:40
Оценка:
Здравствуйте, zoom-zoom, Вы писали:

D>>Тестовое задание для "Связного" делаем?

ZZ>От Вас ничего не скроешь! Надеюсь Вы не из Связного? ))))
ZZ>Хотя может лучше и из Связного и поможет поможете с такой задачей. )
Нет не из связного
Тоже делал это задание, но не взяли. Видимо код ревью не прошёл
Хотя мне мой класс тут же пригодился в одной задаче — и он отлично работал.
Что им могло не понравится..
Re[3]: Пул потоков
От: Divineshadow  
Дата: 06.12.11 07:01
Оценка:
Здравствуйте, zoom-zoom, Вы писали:

D>>Тестовое задание для "Связного" делаем?

ZZ>От Вас ничего не скроешь! Надеюсь Вы не из Связного? ))))
ZZ>Хотя может лучше и из Связного и поможет поможете с такой задачей. )

Кстати, для вашего сведения: здесь
Автор: Mike77
Дата: 04.07.11
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.