标题:[求助][讨论]如何使两个for并行执行?
只看楼主
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
 问题点数:0 回复次数:18 
[求助][讨论]如何使两个for并行执行?

#include <iostream>

using namespace std;

int main()
{

for (int i=0; i<10; i++)
{
cout << "i = " << i << endl;
}

for (int k=0; k<10; k++)
{
cout << "k = " << k << endl;
}

cin.get();
return 0;
}


上面的程序是执行了 for (int i=0; i<10; i++)后再执行for (int k=0; k<10; k++)
有没有办法让他们并行执行.就是说一起执行...
搜索更多相关主题的帖子: int get cout endl 
2007-06-21 14:32
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
那只有多线程了。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-21 14:53
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 
那怎么实现,是否要用到api,如果不用api或其实的C++库,有没有办法实现?

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-21 15:03
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
下面是个例子:
#include <Windows.h>
#include <iostream>
using std::cout;
using std::endl;
typedef struct _Mutex
{
LPTSTR lpStr;
HANDLE mutex;
_Mutex(LPTSTR s,HANDLE m){lpStr=s;mutex=m;}
}* _PMutex;
DWORD WINAPI f1(LPVOID lp)
{

for (int i=0;i<100;i++)
{
WaitForSingleObject(_PMutex(lp)->mutex,INFINITE);
cout<<_PMutex(lp)->lpStr<<i<<endl;
ReleaseMutex(_PMutex(lp)->mutex);
}

return 0;
}
DWORD WINAPI f2(LPVOID lp)
{
for (int i=0;i<100;i++)
{
WaitForSingleObject(_PMutex(lp)->mutex,INFINITE);
cout<<_PMutex(lp)->lpStr<<i<<endl;
ReleaseMutex(_PMutex(lp)->mutex);
}
return 0;
}
void main()
{
HANDLE hMutex=CreateMutex(NULL,FALSE,NULL);
HANDLE hThread1=CreateThread(NULL,0,f1,(LPVOID)new _Mutex(\"first: \",hMutex),0,NULL);
HANDLE hThread2=CreateThread(NULL,0,f1,(LPVOID)new _Mutex(\"second: \",hMutex),0,NULL);
Sleep(1000);
CloseHandle(hThread1);
CloseHandle(hThread1);
}

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-21 15:21
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 
谢谢,不过我想要的不是api的实现,没什么意思.

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-21 15:23
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 
等了很久,乍地没人回贴了.....

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-21 20:41
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
得分:0 

来一个并行执行D:

#include <iostream>

using namespace std;

int main()
{

for (int i=0 , int k = 0; i<10, k < 10; i++, k++)
{
cout << "i = " << i << endl;
cout << "k = " << k << endl;

}

cin.get();
return 0;
}

开玩笑D.


人生重要的不是所站的位置,而是所朝的方向
2007-06-21 21:10
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-21 21:50
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
楼主又吃饱了没事干,瞎折腾.

显然这是需要多线程的,C++没有在语言层支持多线程,因为在不同的系统平台上有不同的实现,需要多线程就要去学特定系统的实现.

语言标准只是悬在空中的东西,没有与运行的系统对接连个printf()都实现不.你如果不想学底层实现,只想在语言层研究学JAVA去吧.

想下在WINDOWS下运行一个可执行程序,这个程序必须是PE文件结构.你设计编译器,需要研究词法分析,然后就是汇编为可执行程序,不讨论运行平台,难道你想做个在Windows和Linux中都可以工作的编译器?除非是JAVA那样的语言,不过还要个JVM,这个JVM在不同的系统中实现也是不一样的.世上那里有真正的空中楼阁.
2007-06-21 22:25
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 
那么,系统的中的多线程就是怎么样实现的呢.
我想,我提的这个问题不是空中楼阁,因为系统也是C实现的.
如果要去做另一个系统,如果在win下进行开发,那未要实现
这个系统的多线程,岂不是要调用 win的api.


/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-21 22:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-149237-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.264913 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved