考虑以下正在运行循环的示例程序;
int main()
{
for (int i = 0; i<= 300; ++i) {
}
}
非常基本,现在假设我想打印出i
每秒的值:
cout << "i= " << i << "\n";
像下面这样的简单循环可能就足够了,其中“elaspedTime”是一个虚构的整数,包含程序运行的秒数,由操作系统神奇地更新:
int lastTime = 0;
while (true) {
if (elapsedTime > lastTime) { // Another second has passed
cout << "i= " << "\n";
lastTime = elapsedTime;
}
}
这里的最终目标是提供如下输出(假设循环恰好每秒运行 100 次,因为它位于旧的、缓慢的 CPU 上):
$ ./myprog
i= 100
i= 200
i= 300
这些都是简单的函数和例程,尽管如此,我认为没有办法在通常只有一个main()
函数的“经典”c++ 程序中执行这样的操作。尽管很简单,但这是我需要学习多线程的关键吗?或者,是否可以调用函数main()
而不等待它们的返回,但没有被调用的函数“占用”线程?