续文件操作

来源:互联网 发布:java 培训班 编辑:程序博客网 时间:2024/06/08 06:35
   对于多线程的程序来说,临界区对于系统的完整性和稳定性是非常重要的,然而如果滥用临界区,不说会发生死锁,简单的也会降低系统系能。    临界区是为了保护在这区间的代码是有且只有一个线程去访问的,所以只有在你要去访问的变量会有多个线程可能去访问时才需要设置临界区。因此在设置临界区时,一定要注意是否接下来用到的变量或属性或对象,是有可能多个线程同时在访问的。比如我整个程序只有一个文件对象,只通过这个文件对象再一个线程里往文件中写数据,那么在写文件时,就不用设置临界区了。    OK,言归正传,我在写文件时发现,程序还没结束的时候,我打开我程序正在写的文件,发现文件的最后显示的数据总是不完整的,就是有一些数据还放在文件对象缓存中,这时候就需要在线程执行的过程中加一条语句用于清空文件缓存,delphi中的清空文件缓存的语句是:    flush(文件对象);对于flush方法,这个语句是很耗性能的,所以清除缓存的时机也要做好设计。最后,我写下C++中新建线程和线程锁的方法和对象(Windows.h),仅作为笔记。HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);//新建线程,其中的Fun即指定的方法HANDLE hMutex = CreateMutex(NULL, FALSE, LPCTSTR("screen"));//初始化临界区(锁)//CloseHandle(hThread);//关闭线程DWORD WINAPI Fun(LPVOID lpParamter)//定义线程方法{    while(1) {         WaitForSingleObject(hMutex, INFINITE);//INFINITE,对象被触发信号后,函数才会返回        //do something;        Sleep(500);        ReleaseMutex(hMutex);//离开临界区    }}

打完收工!

0 0