Страница: 1 |
Страница: 1 |
Вопрос: Новичкам: MultiThreading
Добавлено: 05.03.10 11:31
Автор вопроса: EROS
Наткнулся в инете на стаью, в которой автор очень доходчиво разъясняет некоторые аспекты построения мультипоточных приложений:
1) Что такое поток?
2) Когда имеет смысл использовать потоки? Увеличится ли быстродействие многопоточной программы на одноядерном процессоре?
3) Зачем нужна синхронизация данных в потоках?
4) Как сделать синхронный доступ к данным.
5) Нужна ли синхронизация в однопроцессорных системах?
6) Зачем нужен Invoke в WinForms?
7) Ожидание завершения множества потоков
8) Как принудительно завершить поток?
9) Обработка ошибок в потоке
10) Накладные расходы на поток
11) Особенности пула потоков
Для тех, кто хочет стать джедаем - весьма рекомендую ознакомиться.. Очень поможет для понимания сути бытия...
http://forum.antichat.ru/showthread.php?t=169454
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #1
Добавлено: 09.03.10 01:52
И хоть бы один поблагодарил .
Спасибо ЕRОS, полезная статейка, хотя я всё равно не понял, почему мой мультитрэдинг изредка и непредсказуемо вылетает.
Видимо несудьба в вб6 создать стабильный поток.
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 09.03.10 08:01
Ну все уже давно отказались от этой затеи )) Ты, видимо, последний кто предпринимает попытки ))
Скорее всего это происходит при передачи данных из дополнительного потока в основной.. в НЕТ это решается через делегатов и Invoke, а вот как в VB6 - загадка..
Номер ответа: 3
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #3
Добавлено: 09.03.10 13:05
Пасибки Аналогия с тетей Глашей улыбнула. Так все кладовщики работают
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 09.03.10 18:57
Скорее всего это происходит при передачи данных из дополнительного потока в основной.. в НЕТ это решается через делегатов и Invoke, а вот как в VB6 - загадка..
О_О
При чем тут Invoke?
Invoke запускается в том же потоке.
Если ты про Control.Invoke, то он, насколько я помню, работает через SendMessage, следовательно, в VB6 реализуется аналогичным образом.
По пулу потоков довольно слабо написано, вместо синтетического примера с Sleep, который в сценарии пула вообще нельзя использовать (поскольку при этом на определенное время блокируется один из потоков пула, который мог использоваться для другой задачи) лучше бы привели пример асинхронного IO с использвоанием пула
Номер ответа: 5
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #5
Добавлено: 09.03.10 19:16
Когда в цикле потока использую SendMеssage прога стабильно рушится на старте, а обращение к List.Аdd работает, но изредка вылетает.
Как определить причину краша?