c语言线程中能不能一边计时一边处理任务 这段程序举个例
时间: 2023-05-17 11:07:39 浏览: 165
基于UDP的socket程序,多线程操作,windows下C语言
5星 · 资源好评率100%
子:
非常好的问题!在C语言中,我们可以使用定时器来实现一边计时一边处理任务的功能。下面是一个简单的示例程序:
```
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/time.h>
void *task(void *arg);
int main()
{
pthread_t tid;
struct timeval start, end;
int elapsed_time;
gettimeofday(&start, NULL);
if(pthread_create(&tid, NULL, task, NULL) != 0)
{
printf("Error creating thread\n");
return 1;
}
pthread_join(tid, NULL);
gettimeofday(&end, NULL);
elapsed_time = (end.tv_sec - start.tv_sec) * 1000 + (end.tv_usec - start.tv_usec) / 1000;
printf("Elapsed time: %d ms\n", elapsed_time);
return 0;
}
void *task(void *arg)
{
int i;
for(i = 0; i < 10; i++)
{
printf("Task %d\n", i);
usleep(500000);
}
pthread_exit(NULL);
}
```
在这个程序中,我们使用了pthread_create函数创建了一个新的线程,并在其中执行了一个简单的任务。同时,我们使用了gettimeofday函数来获取程序的开始和结束时间,并计算出了程序的运行时间。
注意,这个程序中并没有使用定时器来实现一边计时一边处理任务的功能,而是使用了usleep函数来让线程休眠一段时间。如果你需要更精确的计时功能,可以使用定时器来实现。
阅读全文