首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于UDP多进程与信号量控制共享内存读写有关问题

2014-01-01 
关于UDP多进程与信号量控制共享内存读写问题遇到点疑惑,求大神指点!写了个UDP的服务器,一开始开了十来个进

关于UDP多进程与信号量控制共享内存读写问题
遇到点疑惑,求大神指点!
写了个UDP的服务器,一开始开了十来个进程,用于逻辑处理;开了一段共享内存,用于保存接收到的要等待处理的数据;用了两个信号量:信号量一用于消费者(十来个进程)通知生产者(recvfrom进程)数据已经取走,缓冲区已经可以写入新数据。信号量二用于生产者(recvfrom进程)通知消费者(十来个进程)新数据已经产生,消费者可以读取新产生的数据。
模型如下:
recvfrom进程(生产者)                                            十来个进程(消费者)

          while(  1 )                                               while( 1 )
          {                                                         {
             P( 信号量一 );                                            P( 信号量二 );
             写入数据到共享内存;                                      读取共享内存数据;
             V( 信号量二 );                                            V( 信号量一 );
                                                                       处理。。。。
          }                                                          }

问题就是:当十来个进程队列的某个进程在锁定这块共享内存读取数据的时候,这时候有大量并发的数据到recvfrom,这样recvfrom是否会因阻塞等待在P(信号一)而出现丢报?

如何去避免和处理比较好?有没有其他更好的模型处理一个进程接收写进共享内存,其他众多进程从共享内存读取数据,如何做到共享内存进程数据的同步?
共享内存 信号量 多进程 udp PV原子操作
[解决办法]
生产者可以創建多一個線程來接收新的数据
[解决办法]
《Windows核心编程》

Synchronization Functions
The following functions are used in synchronization. 

  
 
CancelWaitableTimer  
CreateEvent  
CreateMutex  
CreateSemaphore  
CreateWaitableTimer  
DeleteCriticalSection  
EnterCriticalSection  
GetOverlappedResult  
InitializeCriticalSection  
InitializeCriticalSectionAndSpinCount  
InterlockedCompareExchange  
InterlockedDecrement  
InterlockedExchange  
InterlockedExchangeAdd  
InterlockedIncrement  
LeaveCriticalSection  
MsgWaitForMultipleObjects  
MsgWaitForMultipleObjectsEx  
OpenEvent  
OpenMutex  
OpenSemaphore  
OpenWaitableTimer  
PulseEvent  
QueueUserAPC  
ReleaseMutex  
ReleaseSemaphore  
ResetEvent  
SetCriticalSectionSpinCount  
SetEvent  
SetWaitableTimer  
SignalObjectAndWait  
TimerAPCProc  
TryEnterCriticalSection  
WaitForMultipleObjects  
WaitForMultipleObjectsEx  


WaitForSingleObject  
WaitForSingleObjectEx   


 

热点排行