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

Поиск:

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


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

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



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


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
ivashkanet
Дата 31.3.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Тебе нужно по очереди, или все таки одновременно. smile

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

Это сообщение отредактировал(а) ivashkanet - 31.3.2006, 11:38
PM MAIL WWW ICQ   Вверх
arilou
Дата 31.3.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



FatherFrost,

Код

using System.Threading;

// .....

Thread newThread = new Thread(new ThreadStart(threadMethod));
newThread.Start();

// .....

void threadMethod()
{
   // код, который будет выполняться в отдельном потоке
}



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
FatherFrost
Дата 31.3.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

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



arilou, это понятно, что его так... Вопрос был скорее как одновременно запустить произвольное число потоков... Т.е. запустить 10 одинаковых потоков можно повторив строки 5 и 6 в твоем примере для каждого потока, но как быть если число их м.б. и 10, и 15, и 5.


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
arilou
Дата 31.3.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Можно воспользоваться классом System.Threading.ThreadPool и его методом QueueUserWorkItem



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
FatherFrost
Дата 31.3.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

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



arilou, это понятно, что его так... Вопрос был скорее как одновременно запустить произвольное число потоков... Т.е. запустить 10 одинаковых потоков можно повторив строки 5 и 6 в твоем примере для каждого потока, но как быть если число их м.б. и 10, и 15, и 5.


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
ivashkanet
Дата 31.3.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



FatherFrost, arilou. Это по меньшей мере не красиво, игнорировать мое сообщение.
Если я не прав, что следует из игнорирования, можно мне об этом сказать. Я скажу"Ааа, спасиба, сколько мне еще предстоит узнать smile ".

PM MAIL WWW ICQ   Вверх
arilou
Дата 31.3.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



ivashkanet, йо браза, тебя никто не игнорирует smile Как раз если никто ничего не сказал, значит все аке smile Так что извини, если ненароком обидел.


Цитата(FatherFrost @ 31.3.2006, 13:51 Найти цитируемый пост)
повторив строки 5 и 6 в твоем примере для каждого потока, но как быть если число их м.б. и 10, и 15, и 5.

Не совсем понимаю, какая задача перед тобой стоит. Можешь пояснить?


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Дрон
Дата 31.3.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 92



Цитата(FatherFrost @ 31.3.2006, 14:02 Найти цитируемый пост)
Вопрос был скорее как одновременно запустить произвольное число потоков... Т.е. запустить 10 одинаковых потоков можно повторив строки 5 и 6 в твоем примере для каждого потока, но как быть если число их м.б. и 10, и 15, и 5.

Э-э... Ну и сделай цикл smile

Код

for(int i=0; i<n; i++)
{
    Thread newThread = new Thread(new ThreadStart(threadMethod));
    newThread.Start();
}


PS: Что-то я тоже до конца не понимаю в чём вопрос smile



--------------------
Да. Именно так.
PM   Вверх
arilou
Дата 31.3.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(Дрон @ 31.3.2006, 15:24 Найти цитируемый пост)
PS: Что-то я тоже до конца не понимаю в чём вопрос

ну дык я о том же


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
FatherFrost
Дата 31.3.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

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



ivashkanet, то что ты сказал я знал.... Сорри, что не отреагировал на твое сообщение....
Всем Сорри, за двойной пост, инет тормозил...

Дрон, я примерно так и сделал, но мне это не очень понравилось.

arilou, обязательно посмотрю. При беглом знакомстве с System.Threading.ThreadPool его назначение до конца не осознал.

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


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
ivashkanet
Дата 31.3.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Дрон @ 31.3.2006, 15:24 Найти цитируемый пост)
for(int i=0; i<n; i++)
{
    Thread newThread = new Thread(new ThreadStart(threadMethod));
    newThread.Start();
}

А не будут ли терятся предыдущие потоки, ведь идет переопределение потока???
Хотя, Дрон, ты наверное имел в виду такое:

Код

Thread[] newTreads =new Thread[n];
for(int i=0; i<n; i++)    
{    
    newThread[i] = new Thread(new ThreadStart(threadMethod));    
    newThread[i].Start();    
}

PM MAIL WWW ICQ   Вверх
Дрон
Дата 31.3.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 92



Цитата(ivashkanet @ 31.3.2006, 16:43 Найти цитируемый пост)
хотя, Дрон, ты наверное имел в виду такое:

Ну, по идее, твой код более осмысленный. Но если задача -- просто запустить потоки, а там пусть они сами по себе работают, то и мой сойдёт.

Если отвлечённо смотреть на результат, то разницы между твоим и моим кодом нет: потоки запущены и работают smile

Цитата(FatherFrost @ 31.3.2006, 16:40 Найти цитируемый пост)
Да в принципе все просто. Я хочу сэмулировать работу n-го кол-ва юзеров с веб-сервисом... Вот и хочу чтобы параллельно пускалось несколько потоков...

Ну тут не нужна большая параллельность. Кстати, учти что в Windows XP ограниченное число одновременных соединений -- что-то около 10.



--------------------
Да. Именно так.
PM   Вверх
arilou
Дата 31.3.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(ivashkanet @ 31.3.2006, 15:43 Найти цитируемый пост)
А не будут ли терятся предыдущие потоки, ведь идет переопределение потока???

Не не, ничего не потеряется, т.к. сам поток - это совсем не класс Thread. Единственное, что потеряется, так это контроль над ними, т.е. нельзя будет вызвать например newThread.Abort()


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
FatherFrost
Дата 31.3.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

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



Дрон, Пускается все это на 2003 Server'e, так что я думаю с такими ограничениями проблем не должно быть.


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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