gpt4 book ai didi

C - 如何运行一个线程几秒钟,然后继续运行第二个线程

转载 作者:行者123 更新时间:2023-11-30 20:31:12 24 4
gpt4 key购买 nike

我正在开发我的程序,我希望线程 1 运行 2.1 秒,2.1 秒后我希望线程 2 运行 3.4 秒,然后它需要切换回线程 1。我已经设法使两个线程都运行,但没有给定时间。要求我使用2个线程。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

int main() {

void* taskOne();
void* taskTwo();

pthread_attr_t tattr;
pthread_attr_init(&tattr);

pthread_t thread1, thread2;

double seconds1 = 2.1;
double seconds2 = 3.4;


pthread_create(&thread1, &tattr, taskOne, NULL);
pthread_create(&thread2, &tattr, taskTwo, NULL);

pthread_join(thread1, NULL);
pthread_join(thread2, NULL);

return 0;
}

void* taskOne() {
int i, j, m, n;
while (1) {
for (i = 0; i < 5; i++) {
for (j = 1; j <= 8; j++) {
printf("thread: 1 periodnumber: %i\n", j);
for (m = 0; m <= 1250; m++)
for (n = 0; n <= 250000; n++);


}
}
}
}

void* taskTwo() {
int i, j, m, n;
while (1) {
for (i = 0; i < 5; i++) {
for (j = 1; j <= 8; j++) {
printf("thread: 2 periodnumber: %i\n", j);
for (m = 0; m <= 2750; m++)
for (n = 0; n <= 250000; n++);


}
}
}
}

最佳答案

您可以通过调用 sleep() 函数让线程休眠任意时间,但是这是“休眠for x 秒”而不是“休眠之后 x 秒”。

我能想到实现这一点的唯一方法是在线程外部运行一个计时器,让它们暂停()所需的时间,然后在你再次需要时发送一个非终止信号来唤醒它.

sleep(n) 可以工作,但只能处理整数。

此外,当您尝试暂停/ sleep 线程时,无法保证您的线程不会忙于阻塞 I/O,因此如果这确实发生确实很重要的话根据需要,您需要做一些工作来防止阻塞。

关于C - 如何运行一个线程几秒钟,然后继续运行第二个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52281702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com