Как бы вы сделали обмен между потоками для СОМ порта
			 
			 
			
		
		
		
		Добрый день Всем. 
Собственно сам вопрос как лучше сделать синхронизацию/обмен между потоками одного приложения. Знаю что можно через критические секции,postmessage,send message, posttreadmessage,synchronize. 
Сама задача выглядит так: 
1. Есть главный поток с формой который стартует дополнительный поток приема байтов из компорта TreadRead.  
2. Отсылка запроса в компорт (Write) пока делается из основного потока с формой. Пока не определился нужно ли его выносить в отдельный поток записи. Что посоветуете?. Для уточнения работа с компортом организована посредством WinAPI и структурой Overlapped т.е асинхронно. 
3. Думаю сделать еще  один поток (TreadWork) который будет стартовать  из основного потока   и  разгребать  полученные данные от потока  компорта (TreadRead) и отсылать сформированные данные уже в основной поток с формой. 
Вопрос как лучше сделать сделать обмен между TreadRead->TreadWork-> Основной поток с формой?  
Как я вижу можно сделать допустим так получили данный в Tread Read отправили message в TreadWork , обработали послали message в основной поток. Причем здесь тоже может быть 2 варианта.  
 
1. данные могут передаваться в самом сообщении (wparam b lparam). 
 
2. просто шлем сообщение (допустим ReadOk), поток TreadWork получив такое сообщение считывает из поля  TreadRead массив байтов (еще один вопрос нужно ли защищать данные через критическую секцию), обрабатывает и отсылает главному потоку. 
 
3. Можно еще сделать на Event с WaitFor Miltiple Object.  
 
Вот пока все что смог придумать. Может подскажите что будет работать надежней и быстрее?  
С уважением к всем откликнувшимся. 
		
	
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
		 
		
	
	
	 |