当前位置: 首页 > 面试题库 >

我可以同时从多个线程为一个套接字调用accept()吗?

元胡媚
2023-03-14
问题内容

我正在使用Linux 3.2.0,x86_64。我可以同时从多个线程为一个套接字调用accept()吗?


问题答案:

是的,您可以accept()从多个线程和多个进程调用同一个侦听套接字,尽管指向它的指向可能不如您想象的那么多。内核将只允许一个成功。当使用进程完成此操作时,这称为预分支,并且fork()为每个新连接节省了a的开销。但是,当您处理线程时,可以更轻松地拥有一个等待新连接队列的现有线程池。一个线程执行accept并写入队列,而工作线程读取队列并执行其操作。它更干净,这是一个很好理解的模式,您几乎一无所获。



 类似资料:
  • 我有大约60个套接字和20个线程,我想确保每个线程每次都在不同的套接字上工作,所以我根本不想在两个线程之间共享同一个套接字。 在我的类中,我有一个后台线程,它每60秒运行一次并调用方法。在方法中,我迭代我拥有的所有套接字,然后通过调用类的方法开始逐个ping它们,并根据响应将它们标记为活的或死的。在方法中,我总是需要迭代所有套接字并ping它们以检查它们是活的还是死的。 现在,所有读取器线程将并发

  • 两个线程可以同时使用同一个套接字吗? 例如,首先我打开一个表示Android客户端和windows 7服务器之间连接的套接字。我想使用DataOutpuStream发送一个文件大小的整数,然后在此之后我将使用BufferedOutpuStream发送二进制文件,例如pdf 服务器将获取客户端发送的大小,然后检查收到的文件大小是否正确。它将发送整数、文件大小编号与收到的文件的实际大小进行比较。如果有

  • 问题内容: 假设我们的应用程序只有一个线程。然后我们正在使用,这是什么问题? 我的意思是,如果可以通过同步处理多个线程,那么使用单线程有什么问题? 为什么要改用? 问题答案: 是线程安全的,这意味着它们具有同步的方法来控制访问,因此一次只有一个线程可以访问StringBuffer对象的同步代码。因此,在多个线程可能试图同时访问同一StringBuffer对象的多线程环境中,StringBuffer

  • 这可能是一个很基本的问题,但它使我感到困惑。 两个不同连接的套接字可以共享一个端口吗?我正在编写一个应用服务器,它应该能够处理100K以上的并发连接,我们知道一个系统上可用的端口数量大约是60K(16bit)。一个连接的套接字被分配给一个新的(专用的)端口,因此这意味着并发连接的数量受到端口数量的限制,除非多个套接字可以共享同一个端口。所以问题是。

  • 我们的要求是同时写多个文件。我们正在使用spring批处理来编写文件,并且我们正在从不同的线程中启动spring批处理。每个线程都有自己的应用程序上下文。因此我们可以确保单例bean不会跨多个线程共享。下面是我的代码片段。 这就是我们调用spring批处理的方式。 ThreadPoolExecutor TPE=new ThreadPoolExecutor(10,10,1000000,TimeUni

  • 我需要在给定的时区内的固定时间在我的Quarkus应用程序中执行一个方法,我找到了“Quarkus-调度器”扩展,它提供了“@计划”注释,但这似乎没有提供任何设置时区的可能性。 Java EE“@Schedule”和Spring“@Scheduled”注释都有相应的参数,但我如何在Quarkus中实现这一点?