续文件操作
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);//离开临界区 } }
打完收工!
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- C#控制台下测试多线程的方法
- Ruby 多线程的潜力和弱点分析
- C#中WPF使用多线程调用窗体组件的方法
- C#如何对多线程、多任务管理(demo)
- C#实现多线程的Web代理服务器实例
- c#实现多线程局域网聊天系统
- PHP使用CURL实现多线程抓取网页
- 浅解关于C#多线程的介绍
- 批处理程序中的“多线程”处理代码