POSIX 线程(Pthread)

之前的 TCP 回射服务器通过 fork 子进程来维护多用户的请求, 但是首先 fork 需要将完整的父进程内存映像复制到子进程, 并需要复制所有描述符, 开销大; 其次, 子进程难以和父进程通信. 故而可以尝试多线程编程方式, 线程开销小, 且可以很轻易的通过全局变量通信(线程共享全局变量, 但是局部变量(占空间)各自独享), 但是需要线程并发, 全局变量读写冲突.

下面是多线程式的 TCP 服务器 str_cli 部分, 其余的握手连接部分可以参照 TCP 回射服务器

上述示例需要引入线程的头文件 unpthread.h, 而后声明线程函数 copyto(void *), 当客户端建立连接, 收发消息时, 程序调用 str_cli 函数, 本函数不服务客户端, 而是通过 Pthread_create 创建一个线程 copyto 来维护客户端的数据交互, 真正的数据回射最终由 copyto 函数处理.

Hello world!
文章已创建 196

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部