相关文章推荐
近视的橙子  ·  13.7 ...·  1 年前    · 
腼腆的伏特加  ·  Python ...·  1 年前    · 
成熟的登山鞋  ·  Oracle Linux Bulletin ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

Should i use they with TIdTcpServer, and where they can improve something on my application?

i ask it because maybe they can improve some speed/agility action on TIdTcpServer since i use a Queue.

TIdTCPServer runs a thread for every client that is connected. Those threads are managed by the TIdScheduler that is assigned to the TIdTCPServer.Scheduler property. If you do not assign a scheduler of your own, a default TIdSchedulerOfThreadDefault is created internally for you.

The difference between TIdSchedulerOfThreadDefault and TIdSchedulerOfThreadPool is:

  • TIdSchedulerOfThreadDefault creates a new thread when a client connects, and then terminates that thread when the client disconnects.

  • TIdSchedulerOfThreadPool maintains a pool of idle threads. When a client connects, a thread is pulled out of the pool if one is available, otherwise a new thread is created. When the client disconnects, the thread is put back in the pool for reuse if the scheduler's PoolSize will not be exceeded, otherwise the thread is terminated.

  • From the OS's perspective, creating a new thread is an expensive operation. So in general, using a thread pool is usually preferred for better performance, but at the cost of using memory and resources for idle threads hanging around waiting to be used.

    Whichever component you decide to use will not have much effect on how the server performs while processing active clients, only how it performs while handling socket connects/disconnects.

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question . Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers .