c语言sleep函数只能控制整个程序延时么?能不能只控制其中一个函数延时,主程序照常进行下去?
2条回答 默认 最新
_GX_ 2022-02-09 23:49关注当然可以,让那个函数在一个单独的子线程里执行就可以了
下面是一个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本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用