A
Afei1
Unregistered / Unconfirmed
GUEST, unregistred user!
//在tcpserver里面,根据客户端的请求,需要处理两个事情。
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
//临界区进入
try
if 加密 then
加密解密函数 //需要readstream和writestream,很快,数据不会超过3M
else
更新函数 //同步两个服务器的数据,可能要花几分钟到几个小时
finally
//临界区离开
end;
end;
现在的问题是如果不加入临界区,多个客户端同时连接的时候,加密解密的时候会出错。如果加入临界区则如果一个客户先要求更新数据,另一个客户后要求解密,那要等数据更新完之后才进行解密,要等很久,这显然是不行的。
现在想做成这样,弄两个队列或者说是线程,分别处理两个事情,一个是加密的,一个是更新的,就是加密的和更新数据能同步执行,如果同是加密的或同是更新的必须顺序执行,现在一直想不出要如何做,请各位高手支招。
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
//临界区进入
try
if 加密 then
加密解密函数 //需要readstream和writestream,很快,数据不会超过3M
else
更新函数 //同步两个服务器的数据,可能要花几分钟到几个小时
finally
//临界区离开
end;
end;
现在的问题是如果不加入临界区,多个客户端同时连接的时候,加密解密的时候会出错。如果加入临界区则如果一个客户先要求更新数据,另一个客户后要求解密,那要等数据更新完之后才进行解密,要等很久,这显然是不行的。
现在想做成这样,弄两个队列或者说是线程,分别处理两个事情,一个是加密的,一个是更新的,就是加密的和更新数据能同步执行,如果同是加密的或同是更新的必须顺序执行,现在一直想不出要如何做,请各位高手支招。