![]() |
1
15
您需要使用类似于安全管道技巧的东西,但在您的情况下,您需要使用一对连接的TCP套接字。
如何在Windows下创建一对套接字?
当然,应该为返回值添加一些检查。 |
![]() |
2
7
|
![]() |
3
4
另见本帖: How to signal select() to return immediately? 对于UNIX,使用匿名管道。对于Windows: 解除阻塞可以通过向fd_集添加一个虚拟(未绑定)数据报套接字,然后关闭它来实现。要使此线程安全,请使用queueuserapc: 我找到的使这个多线程安全的唯一方法是在运行select语句的同一线程中关闭并重新创建套接字。当然,如果线程在select上阻塞,这是很困难的。然后在Windows中调用queueuserapc。当Windows在select语句中阻塞时,线程可以处理异步过程调用。您可以使用queueuserapc从不同的线程调度它。Windows中断select,在同一线程中执行函数,并继续使用select语句。现在您可以在APC方法中关闭套接字并重新创建它。保证线程安全,您永远不会释放信号。 |
![]() |
4
0
典型的模式是让工人处理自己的写作。是否有原因要通过发送所有输出IO
如果您确定这个模型,您也可以让您的工作人员使用文件描述符将数据发送回主线程。(
而且,如果您特别确定不会使用管道将数据发送回主进程,那么
|
![]() |
5
0
另一个快速而肮脏的解决方案是向集合中添加本地主机套接字。现在使用这些套接字作为线程间通信队列。每个工作线程只向其套接字发送一些内容,这些内容最终到达接收线程中相应的套接字。这唤醒了
|
![]() |
Nelson Mongare · 套接字生成错误 7 年前 |
|
bingoStack · winsock客户端套接字无效 9 年前 |
![]() |
AlainD · 获取Delphi中所有连接的IP地址 10 年前 |
![]() |
Ira · delphi中类似于Netcat的监听程序不会发回命令 10 年前 |
![]() |
darekg11 · 接收总是少接收1个字节 10 年前 |
![]() |
AYMADA · WinSock-长时间获取本地IP地址 11 年前 |
![]() |
Eduardo Elias · 获取有关已安装网络适配器的信息 11 年前 |
|
user1803300 · 如何强制处理线程内的消息? 12 年前 |