1
我一直在钻研最近进入线程套接字服务器。不幸的是,我还没有找到代码,其中用户可以PM或私人消息。由于每个线程都通过线程连接,因此我一直在寻找一种方法来修改线程的变量而无需任何快乐。我是否必须创建一个全局变量来保存每个线程解析的所有消息(使用互斥锁)?螺纹套接字服务器私人消息
我一直在钻研最近进入线程套接字服务器。不幸的是,我还没有找到代码,其中用户可以PM或私人消息。由于每个线程都通过线程连接,因此我一直在寻找一种方法来修改线程的变量而无需任何快乐。我是否必须创建一个全局变量来保存每个线程解析的所有消息(使用互斥锁)?螺纹套接字服务器私人消息
是的,您需要某种共享数据结构,受互斥锁保护。
它不需要是全局的,但所有的连接处理线程都需要引用它。一个全局可以完成这个任务,但是在主线程中分配的数据结构也是如此,并且在创建每个线程时都会引用它。
假设你的线程被写入阻塞在它们正在读取的套接字上,那么棘手的部分会在它们有新的(内部)消息时唤醒它们。解决这个问题的最简单方法可能是为每个线程创建一个pipe()
,并且在他们正在处理的套接字和其管道上的线程上阻塞select()
。然后,您可以通过管道向它们发送私人消息,共享数据结构将只查找连接的用户并找到其管道的文件描述符。