让c语言延迟功能不要影响整个程序

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

多线程啊