您的位置:首页 > 其它

续文件操作

2015-09-06 19:45 141 查看
对于多线程的程序来说,临界区对于系统的完整性和稳定性是非常重要
的,然而如果滥用临界区,不说会发生死锁,简单的也会降低系统系能。
临界区是为了保护在这区间的代码是有且只有一个线程去访问的,所以
只有在你要去访问的变量会有多个线程可能去访问时才需要设置临界区。因
此在设置临界区时,一定要注意是否接下来用到的变量或属性或对象,是有
可能多个线程同时在访问的。比如我整个程序只有一个文件对象,只通过这
个文件对象再一个线程里往文件中写数据,那么在写文件时,就不用设置临
界区了。
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);//离开临界区
}
}


打完收工!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程