永发信息网

C++线程while循环

答案:3  悬赏:70  手机版
解决时间 2021-01-26 11:00
  • 提问者网友:两耳就是菩提
  • 2021-01-25 20:25
我的while循环里面怎么才能让一个数据只出现一次?
DWORD WINAPI Thread(LPVOID lpvoid)
{
::WaitForSingleObject(g_event,INFINITE);
std::cout<<"----Thead3----"<<std::endl;
while (i < 10)
{
if(i > 5)
{
::EnterCriticalSection( &g_stcritsect ); std::cout<<"Delete ID="<<i<<std::endl;
::LeaveCriticalSection( &g_stcritsect );
}
}
return 0;
}
"Delete ID="会重复出现 多次 而且是同一数据
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-01-25 20:53
#include<stdio.h>
#define N 5
void main()
{
float data[N];
int i,j,t;
printf("请输入%d个同学的平均分数:\n",N);
for(i=0;i<N;i++)
scanf("%d",&data[i]);
printf("\n");
for(i=0;i<N;i++)
for(j=0;j<N-1;j++)
if(data[j]>data[j+1])
{t=data[j];data[j]=data[j+1];data[j+1]=t;}
printf("排序后的输出是;\n");
for(i=0;i<N;i++)
printf("%d",data[i]);
}
全部回答
  • 1楼网友:我住北渡口
  • 2021-01-25 22:18
新建一个全局数组, 每次线程执行后,添加该 ID 到数组中。 下一次线程执行前先判断是否在该数组中包含此 ID,如果有就不执行。 注意:多线程数据同步问题!
  • 2楼网友:归鹤鸣
  • 2021-01-25 21:39
::EnterCriticalSection( &g_stcritsect ); std::cout<<"Delete ID="<<i<<std::endl; ::LeaveCriticalSection( &g_stcritsect ); ---------LeaveCriticalSection之前应该重新初始化下i使其<=5吧,否则其他线程不改变i的值,这里会一直循环输出.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯