续文件操作

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值