Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки, оптимизировать, надо оптимизировать 
:(
    Опции темы
DenWPF
Дата 19.4.2010, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



очень часто требуется запустить обработку данных в потоке и что бы можно было контралировать их количество.

Код

List<Thread> threadList; - список потоков
List<string> accounts - когда этот массив закончится, завершить работу
int countThread количнство потоков

                while (true)
                {
                    if (threadList.Count >= countThread)
                    {
                        threadList[0].Join();
                        threadList.RemoveAt(0);
                    }
                    if (accounts.Count > 0)
                    {
                        Thread t = new Thread(Start);
                        threadList.Add(t);
                        string acc = accounts[0];
                        accounts.Remove(acc);
                        t.Start(acc);
                    }
                    else
                        break;
                }




PM MAIL   Вверх
WolfTheGrey
Дата 20.4.2010, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: нет
Всего: 2



И чего ты хочешь этим добиться? 
Почитай Рихтера CLR Via C#
PM MAIL   Вверх
DenWPF
Дата 20.4.2010, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



этим?
у меня всегда столько потоков = countThread ну или меньше
PM MAIL   Вверх
mrbrooks
Дата 20.4.2010, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



ThreadPool?
PM MAIL   Вверх
DenWPF
Дата 20.4.2010, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



а примером ?
PM MAIL   Вверх
jonie
Дата 20.4.2010, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



http://msdn.microsoft.com/en-us/library/3d...28VS.80%29.aspx
также есть семафоры, но это более общее


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
DenWPF
Дата 20.4.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



а есть не более общее, это же вроде не какое экзотическая задача.

мне то и надо 30 потоков, как один освободился в него новая задача.
PM MAIL   Вверх
WolfTheGrey
Дата 21.4.2010, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: нет
Всего: 2



Вот и запихивай потоки smile, можешь еще масивом обойтись, чтоб коллекцию не трогать.


Код

Thread[] thr=new Thread[30];


Также гдето видел, что в самом классе есть метод, по которому можно полусчить список всех патоков данной прорграммы, и даже список потоков всех программ запущеных на компе! smile


а теперь обьясни нам что ты задумал. Обычно создается экземпляр класса, который работает в отдельном потоке, Ссылку на этот класс и хранят в  коллекции. Но зачем поток сохранять? Ты думаешь как только часть кода отработала и все? поток освобожден? НЕТ, поток умирает вместе с отработонным кодом. Если только не заблокировать его утилизацию сборшика мусора. Но тогда у тебя будет просто труп с данными. Где либо ты возобновляешь работу кода, либо хранишь его, чтоб его данными когда ни будь воспрользоваться.
PM MAIL   Вверх
DenWPF
Дата 21.4.2010, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



у меня один и тот же код отрабатывает с разными данными много много раз.
записываю я его в список что бы потом 0 элемент ждать, но вообще сейчас  использую светофоры(семафоры) да и вобоще пойдука за книжкой ккакой то
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.