完成端口与线程池的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 17:48:48
1、要创建线程池,请问线程池大小应该怎么设定,与服务器cpu个数有什么关系。
2、在使用winsock的完成端口时如何与线程池结合。
问题补充:完成端口accept之后,会有一个accept的socket等待recv,如何判断发生recv事件,如果是select模型,可以用select函数判断是否发生recv事件,那么完成端口如何判断,完成端口是如何判断有接收事件发生?
3,完成端口中,是否需要创建专门的接收线程用来接受,创建发送数据线程用于发送数据。
4、建立监听socket的那些选项是否在完成端口中适用。比如SO_KEEPALIVE、SO_SNDBUF、SO_RCVBUF、SO_REUSEADDR、SO_LINGER等。是否还需要设置为异步
5、可以创建多少个完成端口线程?

1、一般式cpu个数的2倍+2。
2、select可以传入参数进行组合,包括FD_READ、FD_WRITE等。
3、并不完全需要,大数据量频繁收发可采用独立线程的方式。
4、可以。
5、理论可以支持2048个线程,但是根据具体应用不会开很多。监听线程,和收发线程就够了,还有一些额外的针对不同逻辑的工作线程。