#include<iostream>
#include<windows.h>
#include "stdio.h"
using namespace std;DWORD WINAPI Threadpro1(LPVOID lp);
DWORD WINAPI Threadpro2(LPVOID lp);
DWORD dwThreadId[2];
HANDLE hthread1;
HANDLE hthread2, h, h1;
int i=0;void main()
{
//创建两个线程,每个线程给予的标志都是挂起的。
hthread1=::CreateThread(NULL,NULL,Threadpro1,NULL,CREATE_SUSPENDED ,&dwThreadId[0]);
cout<<"创建的第一个线程ID:"<<dwThreadId[0]<<endl;
hthread2=::CreateThread(NULL,NULL,Threadpro2,NULL,CREATE_SUSPENDED ,&dwThreadId[1]);
cout<<"创建的第二个线程ID:"<<dwThreadId[1]<<endl;
//修改两个线程的优先级。第一线程是高于正常,第二个线程是最低
::SetThreadPriority(hthread1,THREAD_PRIORITY_ABOVE_NORMAL);
::SetThreadPriority(hthread2,THREAD_PRIORITY_LOWEST);
//同时唤起两个线程
::ResumeThread(hthread1);
//::WaitForSingleObject(hthread1,INFINITE);这个行我注释掉了。
::ResumeThread(hthread2);
//因为设置时第二个线程低于第一个线程,所以等第二个线程结束关闭线程句柄。
::WaitForSingleObject(hthread1,INFINITE);
::CloseHandle(hthread2);
::CloseHandle(hthread1);
}
DWORD WINAPI Threadpro1(LPVOID lp)
{ while(i<200)
{ ::WaitForSingleObject( (0 = i % 10) ,INFINITE);
::SuspendThread(hthread2);
cout<<"1"<<endl;
i++;
::ResumeThread(hthread2);
Sleep(10);
}
return 0;
}DWORD WINAPI Threadpro2(LPVOID lp)
{
//int i=0;
while(i<200)
{
cout<<"2 = "<<i<< endl;
i++;
}
return 0;
}要求
1. 线程1执行完 后执行线程2
2. 线程1等待一个半满信号 有信号就执行线程2 (无论2是否执行完成都要产生中断暂停执行)
3.线程1 执行完成后再次执行线程2
我要写一个数据采集程序;
先用线程1采集数据 填充缓存大约需要20ms时间这段时间不占用cpu; ;
所以一旦数据填满必须马上回到采集的线程1;执行采集程序;
执行完成以后利用剩余时间
我想用这段时间实现我的通信和数据处理;
类似于c语言的中断程序;
有没有哪位高手能帮我想想怎么办?最好给出点程序;必给分
#include<windows.h>
#include "stdio.h"
using namespace std;DWORD WINAPI Threadpro1(LPVOID lp);
DWORD WINAPI Threadpro2(LPVOID lp);
DWORD dwThreadId[2];
HANDLE hthread1;
HANDLE hthread2, h, h1;
int i=0;void main()
{
//创建两个线程,每个线程给予的标志都是挂起的。
hthread1=::CreateThread(NULL,NULL,Threadpro1,NULL,CREATE_SUSPENDED ,&dwThreadId[0]);
cout<<"创建的第一个线程ID:"<<dwThreadId[0]<<endl;
hthread2=::CreateThread(NULL,NULL,Threadpro2,NULL,CREATE_SUSPENDED ,&dwThreadId[1]);
cout<<"创建的第二个线程ID:"<<dwThreadId[1]<<endl;
//修改两个线程的优先级。第一线程是高于正常,第二个线程是最低
::SetThreadPriority(hthread1,THREAD_PRIORITY_ABOVE_NORMAL);
::SetThreadPriority(hthread2,THREAD_PRIORITY_LOWEST);
//同时唤起两个线程
::ResumeThread(hthread1);
//::WaitForSingleObject(hthread1,INFINITE);这个行我注释掉了。
::ResumeThread(hthread2);
//因为设置时第二个线程低于第一个线程,所以等第二个线程结束关闭线程句柄。
::WaitForSingleObject(hthread1,INFINITE);
::CloseHandle(hthread2);
::CloseHandle(hthread1);
}
DWORD WINAPI Threadpro1(LPVOID lp)
{ while(i<200)
{ ::WaitForSingleObject( (0 = i % 10) ,INFINITE);
::SuspendThread(hthread2);
cout<<"1"<<endl;
i++;
::ResumeThread(hthread2);
Sleep(10);
}
return 0;
}DWORD WINAPI Threadpro2(LPVOID lp)
{
//int i=0;
while(i<200)
{
cout<<"2 = "<<i<< endl;
i++;
}
return 0;
}要求
1. 线程1执行完 后执行线程2
2. 线程1等待一个半满信号 有信号就执行线程2 (无论2是否执行完成都要产生中断暂停执行)
3.线程1 执行完成后再次执行线程2
我要写一个数据采集程序;
先用线程1采集数据 填充缓存大约需要20ms时间这段时间不占用cpu; ;
所以一旦数据填满必须马上回到采集的线程1;执行采集程序;
执行完成以后利用剩余时间
我想用这段时间实现我的通信和数据处理;
类似于c语言的中断程序;
有没有哪位高手能帮我想想怎么办?最好给出点程序;必给分
解决方案 »
- 关于状态栏创建的问题
- #ifdef __cplusplus 使用问题
- 今天去上海华为手机终端面试!面试过程让我很郁闷!CSDN的XDJM们进来看看!我想知道大家是否有碰到过这样的面试!~
- vc6.0属性页EDIT控件输出问题
- 一个VC开发环境的简单问题?
- 如果我要在编写静态和动态库使用MFC类,还能用宏响应消息吗?如何向MFC对象发送消息。
- 列表控件的图标排列
- 我刚刚学习VC..麻烦大家介绍几本VC入门的好书..重谢~
- 问题很长。。。。关于链表和分配空间的,C++
- 怎样在程序中启动IE。
- VC Excel 分割字符串请教高手 新手分少望大家见谅
- VC调试时 出现 First-chance exception in gene.exe: 0xC0000005: Access Violation.错误
1. 线程1执行完 后执行线程2
2. 线程1等待一个半满信号 有信号就执行线程2 (无论2是否执行完成都要产生中断暂停执行)
3.线程1 执行完成后再次执行线程2这要求没看明白. 1 和 3有什么区别? 1和 2不矛盾?
1. 线程1执行完 后执行线程2
2. 线程1等待一个半满信号 有信号就执行线程1 (无论2是否执行完成都要产生中断暂停执行)
3.线程1 执行完成后再次执行线程2打错了 不好意思