我有两个程序, 一个是作为Windows服务程序,里面可创建4块共享内存,通过一个信号量来管理客户端的连接使用。
我的问题是如果客户端申请后没有正常退出,那么信号量就得不到释放,从而相应的共享内存就不能供其它客户端使用了。本来想使用SEH处理的,但调试时提示:
warning C4509: nonstandard extension used: '****Func' uses SEH and '****iter' has destructor。
我在***Func使用了一个容器指针。按提示说法SEH不能和有析构函数的类同时使用。我想问一下这种情况下如何保证我的信号量可以正确释放呢?
我的问题是如果客户端申请后没有正常退出,那么信号量就得不到释放,从而相应的共享内存就不能供其它客户端使用了。本来想使用SEH处理的,但调试时提示:
warning C4509: nonstandard extension used: '****Func' uses SEH and '****iter' has destructor。
我在***Func使用了一个容器指针。按提示说法SEH不能和有析构函数的类同时使用。我想问一下这种情况下如何保证我的信号量可以正确释放呢?
if(waitforsingleobject(正常退出信号量) == 超时)
{
释放信号量
}仅供参考
服务器端在客户端连接后,会一直等待客户端的消息事件,包括客户端断开连接消息。
使用等待超时:
1.等待时间不能确定,也不能设为INFINIT;
2.会阻塞服务器工作线程或者得创建一个专门的线程等待。如何判断客户端是异常退出还是正常工作时而没有发送消息呢?
+服务端主动问(request)客户端,操作是不是结束了,根据客户端答(response)的结果处理信号量(仅供参考)