`
touchinsert
  • 浏览: 1333671 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于linux多线程同时对一个fd做select

 
阅读更多

多线程(多进程也是差不多的情况),select同一个fd,发现在某些情况下面,的确会有多个线程(进程)被唤醒,然后只有一个线程能够accept(stream类型的fd)或者recv(如果是diagram的fd),其它的则会在accept或recv处阻塞,当然如果把fd设成非阻塞的,则会返回一个失败。

所以多线程同时select一个fd时,还是把fd设成非阻塞的,省得麻烦。因为循环处理时,往往也顺便在没有事件发生时,顺带做一些定时器的工作,这时如果堵住了,就不是好事了,没法去处理定时器计费了。

分享到:
评论

相关推荐

    linux epoll多线程编程 例子

    《MyLinuxThread.txt》文件可能包含了一个关于如何在Linux上使用epoll和线程池进行编程的实例,这将有助于加深对这一主题的理解。 总结来说,Linux的epoll多线程编程能够有效地提升高并发场景下的系统性能,通过...

    linux下用select实现一对多通讯

    在这种场景下,`select`函数是一个非常实用的工具,它允许服务器程序同时监控多个套接字(socket)的状态,从而实现一对多的通讯模式。本文将详细介绍如何在Linux下使用`select`函数来实现这样的功能。 首先,`...

    Linux之select多socket范例

    通过分析和学习这个代码,你可以理解如何在实际项目中应用`select`函数来处理多个UDP socket,以及如何构建一个高效的多线程UDP服务器。 总的来说,`select`是Linux网络编程中的重要工具,尤其适用于需要同时处理多...

    IO复用select+多线程.rar

    本示例着重讲解了如何使用IO复用机制`select`配合多线程来构建一个高效的TCP服务器,这在Linux C环境中尤为常见。首先,我们需要理解IO复用的概念。 IO复用是一种提高服务器性能的技术,它允许单个进程监视多个文件...

    Linux下C语言多线程,网络通信简单聊天程序

    本文将介绍如何在Linux环境下使用C语言实现一个多线程的简单聊天程序,该程序基于网络通信,能够实现1对N的聊天模式。主要涉及的技术包括多线程、网络编程、UNIX域协议(文件系统套接字)以及异步I/O模型的select...

    linux socket的select函数例子

    在Linux系统中,`select`函数是用于网络编程中处理多路I/O复用的关键机制之一,它允许程序同时监控多个文件描述符(如网络套接字)的状态变化,而无需实际读取或写入数据。`select`函数在处理高并发连接请求时尤其...

    linux使用select 编写简单的计算器运算程序

    在Linux操作系统中,`select`函数是用于处理多个文件描述符(FDs)的I/O事件,它允许程序在一个或多个文件描述符准备就绪时得到通知。在本例中,我们将利用`select`来创建一个简单的命令行计算器程序,用户可以输入...

    Linux中select函数使用详解.zip_Linux中select函数使用详解

    在Linux系统中,`select`函数是用于处理多个文件描述符(FD)的I/O事件的一种方式,尤其...通过合理使用,`select`可以在有限的资源下有效地处理多个I/O事件,是初学者理解和实践多线程、多进程通信的关键知识点之一。

    linux c语言 select函数的用法

    此示例代码中,`select`函数被用来同时监控一个套接字(`sock`)和一个文件(通过`FILE *fp`)。每当这两个文件描述符之一变得可读时,程序就会读取数据并打印出来。 #### 八、总结 通过`select`函数,开发人员可以...

    采用I/O复用技术select实现socket通信,完成Linux下的多客户聊天室!

    在多客户端聊天室的场景中,服务器端通常会为每个客户端创建一个socket,并将所有socket的描述符添加到`select`的监控集合中。当有新的消息到达或用户发送消息时,`select`会通知我们,然后根据返回的`fd_set`处理...

    linux下的高并发处理select 和epoll

    `select`是一种古老的I/O多路复用机制,它允许程序在一个集合中的多个文件描述符上进行轮询,以检测哪些描述符准备好进行读、写或异常处理。`select`函数的基本结构如下: ```c #include <sys/select.h> int select...

    Linux下C语言多线程,网络通信简单聊天程序.pdf

    在Linux环境下使用C语言实现一个简单的多线程网络聊天程序,涉及到的关键知识点包括但不限于以下几点: 1. Linux环境下的C语言编程基础 - 熟悉Linux操作系统及其命令行工具。 - 理解C语言基本语法和库函数的使用...

    linux内核select/poll,epoll实现与区别

    select,poll,epoll都是多路复用IO的函数,简单说就是在一个线程里,可以同时处理多个文件描述符的读写。 select/poll的实现很类似,epoll是从select/poll扩展而来,主要是为了解决select/poll天生的缺陷。 epoll在...

    select多个客户端连接

    在实际的SocketTest项目中,可能包含了一个简单的服务器端示例,演示了如何使用`select`来处理多个客户端的连接。通过分析和运行这个示例,可以更直观地理解`select`在多客户端连接中的运用。 总结,`select`是处理...

    Linux系统Select函数.pdf

    假设我们需要编写一个简单的网络服务器,该服务器能够同时处理多个客户端连接,可以使用`select()`函数来实现。以下是一个简化的示例代码框架: ```c #include #include <sys/select.h> #include #include #...

    学习网络编程5-多线程服务器.ppt

    多路复用I/O模型是指服务器使用select函数来监听多个文件描述符(FD),以便同时处理多个客户端的请求。该模型可以解决资源限制的问题,因为服务器可以同时处理多个客户端的请求,而不需要为每个客户端创建一个单独...

    Socket多路复用select

    以下是一个使用`select`进行Socket多路复用的简化示例: ```c #include <sys/select.h> #include #include #include #include #include #define MAX_FD 1024 int main() { int listen_sock = socket(AF_INET...

    一个使用select实现的服务端包括数据包控制

    同时,还可以结合多线程或多进程来进一步提升并发能力。 7. **实际应用**: 这种基于`select`的服务器模型常见于早期的互联网服务,如FTP、SMTP服务器等。虽然现代Web服务器更多地采用更高效的模型,但对于学习...

    linux—select详解(转载).pdf

    在Linux操作系统中,`select`系统调用是一个非常重要的I/O多路复用机制,它允许程序同时监控多个文件描述符(file descriptor,简称句柄)的状态变化,以便在任何句柄准备好进行读写操作时能够及时响应。这篇文章将...

    linux_threadpool.zip_epoll select _epoll thread_epoll编程_thread

    线程池是一种多线程处理形式,预先创建了一组线程,当有任务需要执行时,从线程池中取出一个线程来执行任务,完成后线程返回线程池,而不是立即销毁。线程池可以有效控制运行的线程数量,避免因大量创建和销毁线程...

Global site tag (gtag.js) - Google Analytics