TServerSocket线程安全的问题

panxiang 2006-06-28 04:51:49
如果使用stNonBlocking方式,是否就可以完全不考虑线程同步的问题?
ServerSocket1ClientDisconnect,ServerSocket1ClientRead这些事件控件内部是否以消息的方式执行的?ServerSocket1ClientRead事件执行过程中有没有可能被其它的事件打断?
...全文
403 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2006-07-10
  • 打赏
  • 举报
回复
stNonBlocking方式,可以不考虑线程同步的问题
僵哥 2006-07-03
  • 打赏
  • 举报
回复
使用stNonBlocking模式,通常也称select消息模式,那个主要需要考虑的并不是线程问题,而是消息。而在接收过程当中,本人所碰到过的是不能使用Appliation->ProcessMessage之类的,否则接会出现数据接收不完全的问题。
僵哥 2006-07-03
  • 打赏
  • 举报
回复
BCB封装的类都是成熟的类.了解些基本使用,协调好就不会出现问题.
---------------------------
BCB很多封装类都是为了快速开发而使用的,很多该算是鸡肋,包括TServerSocket,当然2006当中的TCPServer也好不到哪去。因为这些都没有相关的详细的说明文档,除非懂Delphi可一遍Source,否则还不知道是咋回事情。比如象TCPServer,Accept事件当中,你必须一直等使用完再返回,否则如果你想另外启动一个线程去做相关的事情,而当场结束OnAccept事件代码,那么,那个Accept的Socket就会被清理掉。另外就是在很多与线程相关的东西当中,尽可能避免与VCL的交互或对VCL的操作,否则即使不出现线程死锁(使用了线程同步)那么也会在效率上大打折扣。关于线程,Thread.pas(好象是这个文件中),当中关于线程的代码也可以参考一下。其实很多Delphi的Source还是很有用的,它可以让你从某一种编程的角度去处理一些相关UI等的问题,但是毕竟IDE的重点是IDE,除了一些基础的类库之外的一些扩展类,往往只是为了应付着能用的态度开发出来的,毕竟很多方面都有着鱼和熊掌难以兼得的问题,所以也不需要太过强求。如果有必要则可以考虑自己动手去构建。
Alaylm 2006-07-02
  • 打赏
  • 举报
回复
BCB封装的类都是成熟的类.了解些基本使用,协调好就不会出现问题.

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧