Страница: 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 работает, но изредка вылетает.
 
    
Как определить причину краша?