65.9K
CodeProject 正在变化。 阅读更多。
Home

计时器和套接字

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.10/5 (5投票s)

2004年4月20日

2分钟阅读

viewsIcon

44299

downloadIcon

3725

控制定时器、时序、提供的服务和使用的服务。

Sample Image

引言

BOS 包含 TIM 和 SOC 子系统的功能。提供了 17 个额外的例程来满足 C/C++ 和 VB 环境中的应用程序需求。实践表明,150TIM+400SOC 插槽对于一个应用程序来说已经足够了。

背景

每个插槽都可以设置为发出事件标志、执行函数或派生线程;可以带参数也可以不带参数。 创建时,会为插槽分配一个数字(即 1 到 550)。 插槽可以通过插槽号删除。

当第一次调用任何相关例程时,就会完成初始化。 使用 make_slot 设置插槽。 使用 remove_slot 销毁插槽。 使用 reset 取消初始化 BOS 子系统。 用户通过调用 await_slot 来促进操作。

当一个插槽被触发时,它的动作就会被执行,除非它的动作是“从await_slot返回”并且我们不在await_slot中。 如果我们在,那么它会返回。

预计一个进程会从它的任何线程设置它的插槽需求,然后这些线程中的一些线程会在await_slot中花费时间。 当一个线程从await_slot返回时,如果不是因为超时原因,那将是因为在相关插槽组中发生了没有函数或线程入口设置的触发状态。 在执行此触发状态后,线程应重新调用await_slot。 也许一个常见的用法是所有插槽条目都有一个函数或线程入口点,这样从await_slot的唯一返回将是因为超时原因。

“等待”和九个“创建”调用都采用一个组号。 这允许等待插槽集合的子集,可能由不同的线程等待。

使用代码

VC 6.0 项目

  • BOSDLL.dll 放在您的路径变量上的一个目录中。
  • 将库BOSDLL.lib 添加到项目资源中。
  • 将模块BOScalls.hSOCcalls.hTIMcalls.h 添加到项目中。
  • 使用其中的例程。

VB 6.0 项目

  • 使用 regsvr32 注册 BOSDLL.dll
  • 将模块BOSDLL.basSOCDLL.basTIMDLL.bas 添加到项目中。
  • 使用其中的公共例程。
//
// Source code to produce the above console screen
// is to be found in the 1st of the 3 demo C/C++ projects.
//

历史

  • 3.4 - BOS_Src.cpp - 注释/日志维护。
  • 3.3 - 对于仅 C/C++ 用户,可以使用提供的工作区和项目文件构建静态库。
  • 3.2 - 服务器端“选择”超时时间从 50 毫秒减少到 1 毫秒。 这允许更快的传输,但机器会变得更忙。
© . All rights reserved.