当前位置: 首页 > news >正文

Windows 同步技术-计时器队列和内存屏障

计时器队列

CreateTimerQueue 函数为计时器创建队列。 此队列中的计时器(称为 计时器队列计时器)是轻量级对象,可用于指定要在指定到期时间到达时调用的回调函数。 等待作由 线程池中的线程执行。

若要将计时器添加到队列,请调用 CreateTimerQueueTimer 函数。 若要更新计时器队列计时器,请调用 ChangeTimerQueueTimer 函数。 可以指定要在计时器过期时由线程池中的工作线程执行的回调函数。

若要取消挂起的计时器,请调用 DeleteTimerQueueTimer 函数。 完成计时器队列后,调用 DeleteTimerQueueEx 函数以删除计时器队列。 队列中所有挂起的计时器将被取消并删除。

同步屏障

同步屏障使多个线程可以等待,直到所有线程都到达特定执行点,然后再继续任何线程。 无法跨进程共享同步屏障。

同步屏障对于分阶段计算非常有用,其中并行执行相同代码的线程必须在继续下一个阶段之前完成一个阶段。

若要创建同步屏障,请调用 InitializeSynchronizationBarrier 函数,并指定线程在阻止之前应旋转的最大线程数以及线程的旋转次数。 然后启动将使用屏障的线程。 每个线程完成其工作后,它会调用 EnterSynchronizationBarrier 等待屏障。 EnterSynchronizationBarrier 函数会阻止每个线程,直到屏障中阻塞的线程数达到屏障的最大线程计数,此时 EnterSynchronizationBarrier 取消阻止所有线程。 EnterSynchronizationBarrier 函数针对进入屏障的线程之一返回 TRUE,并为所有其他线程返回 FALSE。

若要在不再需要同步屏障时释放同步屏障,请调用 DeleteSynchronizationBarrier。 调用 EnterSynchronizationBarrier 后立即调用此函数是安全的,因为该函数可确保所有线程在释放前都使用屏障完成。

如果永远不会删除同步屏障,则线程可以在进入屏障时指定 SYNCHRONIZATION_BARRIER_FLAGS_NO_DELETE 标志。 使用屏障的所有线程都必须指定此标志;如果没有任何线程,则忽略该标志。 此标志会导致函数跳过删除安全性所需的额外工作,从而提高性能。 请注意,当此标志生效时删除屏障可能会导致句柄访问无效,以及一个或多个永久阻止的线程。

相关文章:

  • Super-Vlan和MUX-Vlan的原理、配置、区别
  • 02.Python代码Pandas - Series全系列分享(使用.特点.说明.取值.函数)
  • RK3588芯片NPU的使用:Windows11 Docker中编译YOLOv8-Pose C Demo并在开发板运行实践
  • 07-IDEA企业开发工具-开发入门程序
  • Linux:41线程控制lesson29
  • 集结号海螺捕鱼服务器调度与房间分配机制详解:六
  • springboot-基于Web企业短信息发送系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C语言中小写字母转大写字母
  • 批量处理多个 Word 文档:插入和修改页眉页脚,添加页码的方法
  • Java大师成长计划之第1天:Java编程基础入门
  • gem5-gpu教程06 回归测试
  • Hadoop基础知识及部署模式
  • 商业智能定义与最佳实践分析
  • MyBatis-Plus分页插件的使用
  • Mysql 简单数据查询
  • Node.js 开发用户登录功能(使用mysql实现)
  • 深入理解 G1 GC:已记忆集合(RSet)与收集集合(CSet)详解
  • JAVA----方法
  • 结合地理数据处理
  • 《算法笔记》10.4小节——图算法专题->最短路径 问题 D: 最短路径
  • 铁路12306回应“五一前大量放票”传闻:个别方向和区段出现新增票额,均即时进入系统重新发售
  • 国台办:台商台企有信心与国家一起打赢这场关税战
  • “乐购浦东”消费券明起发放,多个商家同期推出折扣促销活动
  • 西班牙葡萄牙电力基本恢复
  • 申花四连胜领跑中超联赛,下轮榜首大战对蓉城将是硬仗考验
  • 乌克兰否认俄收复库尔斯克州,称战斗仍在持续