c语言sleep函数只能控制整个程序延时么?能不能只控制其中一个函数延时,主程序照常进行下去?
当然可以,让那个函数在一个单独的子线程里执行就可以了
下面是一个c++的例子
#include <iostream>
#include <thread>
#include <chrono>
#include <mutex>
using namespace std;
mutex out_mutex;
void f1()
{
for (int i = 0; i < 5; i++)
{
{
lock_guard<mutex> lock(out_mutex);
cout << "f1(): i=" << i << endl;
}
this_thread::sleep_for(chrono::milliseconds(10));
}
}
void f2()
{
for (int i = 0; i < 5; i++)
{
{
lock_guard<mutex> lock(out_mutex);
cout << "f2(): i=" << i << endl;
}
this_thread::sleep_for(chrono::milliseconds(10));
}
}
int main()
{
thread t1(f1);
thread t2(f2);
for (int i = 0; i < 5; i++)
{
{
lock_guard<mutex> lock(out_mutex);
cout << "main(): i=" << i << endl;
}
this_thread::sleep_for(chrono::milliseconds(10));
}
t1.join();
t2.join();
return 0;
}
$ g++ -Wall main.cpp
$ ./a.out
main(): i=0
f2(): i=0
f1(): i=0
main(): i=1
f2(): i=1
f1(): i=1
f2(): i=2
f1(): i=2
main(): i=2
main(): i=3
f2(): i=3
f1(): i=3
main(): i=4
f1(): i=4
f2(): i=4
多线程啊