在C语言中,可以使用POSIX线程库(pthread)来实现多线程运行时间,下面是一个详细的步骤和示例代码:
(图片来源网络,侵删)1、引入头文件:
#include <stdio.h> #include <pthread.h> #include <time.h>
2、定义一个线程函数:
void* thread_function(void* arg) { // 获取开始时间 clock_t start = clock(); // 执行任务 // 在这里编写需要并行执行的代码 // 获取结束时间 clock_t end = clock(); // 计算并输出运行时间 double run_time = (double)(end start) / CLOCKS_PER_SEC; printf("Thread %ld: Run time = %lf seconds ", pthread_self(), run_time); return NULL; }
在这个函数中,使用clock()
函数来获取当前时间的时钟周期数,然后通过计算结束时间和开始时间的差值得到运行时间,将线程ID和运行时间打印出来。
3、创建线程:
int main() { const int num_threads = 5; // 要创建的线程数量 pthread_t threads[num_threads]; // 存储线程ID的数组 int i; // 创建线程 for (i = 0; i < num_threads; i++) { pthread_create(&threads[i], NULL, thread_function, NULL); // 创建线程并指定线程函数和参数为NULL } // 等待线程完成 for (i = 0; i < num_threads; i++) { pthread_join(threads[i], NULL); // 等待线程完成,参数为NULL表示不需要返回值 } return 0; }
在主函数中,首先定义了一个pthread_t
类型的数组用于存储线程ID,然后使用pthread_create()
函数创建指定数量的线程,并将每个线程的ID存储在数组中,使用pthread_join()
函数等待所有线程完成,注意,在使用完线程后,需要调用pthread_join()
函数来确保主线程在所有子线程完成后再退出。
4、编译和运行:
gcc o multithreading multithreading.c lpthread lrt # 编译命令,lpthread和lrt是链接库选项 ./multithreading # 运行程序命令
使用上述编译命令编译程序,生成可执行文件multithreading
,然后运行该文件即可看到各个线程的运行时间。
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。