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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с потоками, потоки 
:(
    Опции темы
N1VaL
Дата 19.4.2012, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 17.3.2008

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



есть три потока, 
1 - Поток выполняет операцию, зацикливает (поток не когда не заканчивается)
2 - Поток тоже выполняет операции не когда не заканчивается

Как мне сделать остановку потока пока выполняется другой поток
то есть
 если начал выполняться 1 поток то второй на время остановить
и наоборот 

прибывал Suspend() но чё то как то не всегда всё гладко проходит инигда вылетают ошибки и прога зависает...

есть ещё третий поток который останавливает два предыдуших делает свои дела и возобнавляет их

Вопрос в следующем Как правильно останавливать запускать потоки? в интернете не чего для себя толкового ненашёл, может чего не понял, заранее спасибо за ответы

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


uploading...
****


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

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



Цитата(N1VaL @  19.4.2012,  23:49 Найти цитируемый пост)
Вопрос в следующем Как правильно останавливать запускать потоки? в интернете не чего для себя толкового ненашёл, может чего не понял, заранее спасибо за ответы

Ты чего-то не того хочешь smile 

Цитата(N1VaL @  19.4.2012,  23:49 Найти цитируемый пост)
есть три потока, 
1 - Поток выполняет операцию, зацикливает (поток не когда не заканчивается)
2 - Поток тоже выполняет операции не когда не заканчивается

Используй thread pool.

Цитата(N1VaL @  19.4.2012,  23:49 Найти цитируемый пост)
если начал выполняться 1 поток то второй на время остановить
и наоборот 

А нахрена тогда вообще потоки?
Если тебя устраивает поочередное выполнение, тогда зачем нужно создавать потоки?

Это сообщение отредактировал(а) azesmcar - 20.4.2012, 09:35
PM   Вверх
erm0l0v
Дата 20.4.2012, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

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



Как я понимаю вам требуется не потоки останавливать, а разрешать потокам доступ к каким либо ресурсам по очереди... Для этого в коже потоков выделите критичные секции и реализуйте синхронизацию. Способов реализовать синхронизацию много.
Самый простой использовать оператор lock, но лучше воспользоваться специальными механизмами например Mutex или AutoEvent.

Останавливать поток из другого не хорошо, вы замучаетесь искать ошибки.
PM MAIL   Вверх
N1VaL
Дата 20.4.2012, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 17.3.2008

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



ну тут как получается для чего мне нужны потоки

действия вроде как бы и поочерёдности выполняются но всё же паралельно
Так как когда начинает выполнятся первый поток у него есть слип он засыпает на 20 минут потом продолжает 

В этот момент выполняется другой поток который время от времени то же засыпает, в этом и получается параллельность для этого я и стал использовать потоки

в этих потоках грубо говоря происходит посыл данных на сервер, а третий поток проверяет всё ли нормально с интернетом, и если вдруг инет пропал он отключает потоки что бы они перестали посылку данных, и начинает коннеститься к инету связь восстанавливается и потоки включаются заново)

Вот с остановкой потоков и их возобнавлением и возникли проблемы

Это сообщение отредактировал(а) N1VaL - 20.4.2012, 19:36
PM MAIL   Вверх
erm0l0v
Дата 20.4.2012, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

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



А зачем 2 потока для работы с сервером? Есть причины по которым вы не можете сделать это в одном потоке?

Зачем 3 поток который проверяет подключение? отлавливайте ошибки подключения с помощью пинга а далле с помощью эксепшенов. Например перед отправкой данных пропинговали сервер, если подключение ест отправляете данные, если нет то например увеличиваете таймаут слипа, Пинг есть отправляете данные на сервер, если в момент отправки произошло исключение, значит поступаем так же как и в случае отсутствия пинга.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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