首页 理论教育 Initialize和Uninitialize详解

Initialize和Uninitialize详解

时间:2023-10-21 理论教育 版权反馈
【摘要】:Initialize和Uninitialize两个函数是Hello China的对象语义定义的,用于完成对象的一致创建和销毁。其中,Initialize函数在对象被创建完成后调用,用来完成对象的初始化工作,而Uninitialize函数则在对象的销毁过程中调用,用来释放对象占用的资源。设置WaitForThisObject、WaitForThisObjectEx、ReleaseSemaphore、SetSemaphoreCounter等函数指针的值,一般情况下,这些函数都作为静态函数在一个模块(源文件)内实现。下面是Initialize函数的实现代码。在semaphore创建完成后,线程可以调用SetSemaphoreCounter函数重新设置一个nCounter,以满足实际需要。

Initialize和Uninitialize详解

Initialize和Uninitialize两个函数是Hello China的对象语义定义的,用于完成对象的一致创建和销毁。其中,Initialize函数在对象被创建完成后调用,用来完成对象的初始化工作,而Uninitialize函数则在对象的销毁过程中调用,用来释放对象占用的资源。一般情况下,这两个函数执行相反的操作。

在Semaphore对象的实现中,Initialize函数主要完成下列工作:

(1)创建等待队列对象(__PRIORITY_QUEUE)并初始化该对象。

(2)设置semaphore对象的nCounter成员变量缺省值(当前缺省值为1)。

(3)设置WaitForThisObject、WaitForThisObjectEx、ReleaseSemaphore、SetSemaphoreCounter等函数指针的值,一般情况下,这些函数都作为静态函数在一个模块(源文件)内实现。(www.xing528.com)

下面是Initialize函数的实现代码。

其中,DEFAULT_SEMAPHORE_COUNTER是一个预先定义的宏,当前版本下,该数字定义为1。在semaphore创建完成后,线程可以调用SetSemaphoreCounter函数重新设置一个nCounter,以满足实际需要。

Uninitialize函数的实现与Initialize的实现相反。在Uninitialize函数中完成等待队列对象(lpWaitingQueue)的销毁工作,不再赘述。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈