zoukankan      html  css  js  c++  java
  • core--线程池

    对于服务器-客户端这种架构的软件,通常客户端的数据来自于服务器,如何让一个服务器进程,来满足多个客户端程序的数据请求?一种简单的方法就是,每当一个客户请求来领,服务器就为该客户端创建一个线程。当有100个客户端请求,服务器就应该有100个数据结构分别管理每一个线程。通常服务器还要为每个客户端如何分配,哪个客户端发多少数据进行动态的调整。这是一个非常复杂的工作。好的是,windows为我们提供了一个这种问题的解决方案--线程池

    线程池编程,只需要关心任务本身,而不需要去创建,管理,销毁线程。为了便于理解,我们的可以将我们编程的线程代码当做一个任务,交给线程机器人,然后让线程去执行。线程池就是一个超级机器人,专门用来管理每一个线程。

    线程池有一下4个应用场景:

    1.异步方式的函数调用

    2.定时函数调用

    3.内核促发时函数调用

    4.异步I/O请求完成时函数调用

    使用通过4步来实现

    1.根据所选择的应用场景实现一个函数调用原型

    4种应用场景的函数模型分别为:

    VOID CALLBACK WorkCallback

    VOID CALLBACK TimeoutCallBack

    VOID CALLBACK WaitCallBack

    VOID CALLBACK OverlappedCompletionRoutine

    2.创建一个工作项

    4种应用场景的函数模型分别为:

    PTP_WORK CreateThreadPoolWork(@WorkCallback,…)

    PTP_TIMER CreateThreadPoolTimer(@TimeoutCallBack,….)

    PTP_WAIT CreateThreadPoolWait(@WaitCallBack,…)

    PTP_IO CreateThreadPoolTO(…,@OverlappedCompletionRoutine,…)

    3.将工作项提交到线程池

    4种应用场景的函数模型分别为:

    SubmitThreadPoolWort(PTP_WORK,…)

    SetThreadPoolTimer(PTP_TIMER,…)

    SetThreadPoolWait(PTP_WAIT,…)

    StartThreadPoolIO(PTP_IO,…)

    4.关闭工作项

    4种应用场景的函数模型分别为:

    CloseThreadPoolWork(PTP_WORK)

    CloseThreadPoolTimer(PTP_TIMER)

    CloseThreadPoolWait(PTP_WAIT)

    CloseThreadPoolIO(PTP_IO)

  • 相关阅读:
    张艾迪(创始人):视觉计算极简主义的设计
    张艾迪(创始人):同一个世界.同一个梦想
    张艾迪(创始人):Hello.世界...
    张艾迪(创始人):理念是全世界都在用....
    张艾迪(创始人):解码互联网天才
    张艾迪(创始人):艾迪成长记
    张艾迪(创始人): 趣味励志
    张艾迪(创始人): 励志的路上
    张艾迪(创始人):创始人故事无限N个
    张艾迪(创始人): 从诞生那一刻.走向整个世界
  • 原文地址:https://www.cnblogs.com/pavkoo/p/3427002.html
Copyright © 2011-2022 走看看