解决方案 »
- 谁能发我个.CAB包?或者帮我打包一个.ocx 组件吗!哭求!--
- 如何使用VC开发电子邮件接收程序(含附件)?谢谢。
- 有人使用过Progress Dialog吗?
- 关于new指令
- 如何将BSTR字符串转成char* ?
- VC对话框问题
- 面向对象的问题(分数多多)
- 请问有谁知道Microsoft WDM Image Capture (Win32)的编程方法?
- 幼儿园问题之二:用CreateStatic创建CSplitterWnd后分割条无法鼠标拖动
- 谁知道CLISTCTRL最多能显示多少条数据,当我把一个机子的文件(每个文件一条记录)全部放进去时,程序竟然崩溃了。
- Vc下怎么计算我建的数据库的一个表中的列
- vc编程,HTML的文件,转换成为txt或者图片等文本文件
然后在程序初始化时执行 InitializeCriticalSection(&cs); 然后在主线程,子线程中要同步的代码下:
{
EnterCriticalSection(&cs);
...要同步的代码
LeaveCriticalSection(&cs);}
程序退出时执行
DeleteCriticalSection(&cs);如修改子线程的运行规则或传递数据。
都可以通过设置全局变量 然后在互斥代码里使用
子线程等待是否有数据, 可以采用 Event 来实现让子线程有数据要处理时才起动, 没数据时挂起
采用随便的一个volitale bool bRun变量, 可以实现子线程运行时检测自己是否要退出
流程的变动, 实时性不高, 那么同样可以采用变量的方式, 让子线程在处理数据的时候改变规则, 假如每一种数据都有一种规则, 那么就把规则作为数据写入再呼叫子线程.
假如要检测子线程的运行状态, 同样的采用普通的变量就可以控制.
假如实时性要求较高, 实时得知子线程运行状态, 可以采用Interlocked类的API来标识运行状态, 外部访问时也是采用Interlocked类的API来判断值即可.
多线程编写, 没有固定的模式的, 也没有安全的模式, 只有具体情况具体分析才能够发挥多线程的作用.
实现性要求比较高, 那么就采用Interlocked类的, 子线程发现Interlock的结果不一样, 就转处理流程.