Re: многопоточность - два вопроса
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.11.10 12:45
Оценка:
Здравствуйте, abb269, Вы писали:

A>Здравствуйте,

A>Помогите разобраться с многопоточностью не самому профессиональному программисту.
A>Есть внешний источник посылающий данные в формате string name/string line. Нужно принимать и обрабатывать эти данные с максимально возможным быстродействием.
A>Попытка применить что-то вроде
A>
A>            switch (name)
A>            {
A>                case "a":
A>                    Thread tA = new Thread(GetA);
A>                    tA.Start(line);
A>                    break;
A>                case "b":
A>                    Thread tB = new Thread(GetB);
A>                    tB.Start(line);
A>                    break;
A>            }

A>

A>с последующей обработкой в Get... работает неадекватно.
A>Посоветуйте, пожалуйста, в какую сторону нужно смотреть.
A>Это глобальный, можно сказать вопрос.
A>Но в процессе моих войн с многопоточностью образовался и еще один, маленький.
A>Можно ли исправить такой вот код

Если нужна эффективность то лучше бы использовать Task Parallel Lubrary ...
хотя нужно знать сколько запросов за единицу времени поступает и как долго выполняется обработка

A>
A>        static void Main(string[] args)
A>        {
A>            for (int i = 1; i<=10; i++)
A>            {
A>                string line = i.ToString();
A>                Thread t = new Thread(Go);
A>                t.Start(line);
A>                t.Join();
A>            }
A>            Console.ReadLine();
A>        }

A>        static void Go(object o)
A>        {
A>            Thread.Sleep(5000);
A>            Console.WriteLine((string)o);
A>        }

A>


A>чтобы он напечатал цифры в правильной последовательности меньше, чем за 5*10 секунд?


Join блокирует текущий поток пока t не завершит работу, следует вызывать Join вне тела цикла (например, сохранять потоки в списке и потом пробегаться по нему)

A>Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.