#include <stdio.h> #include <pthread.h> #include <sys/time.h> #define MAX 10 pthread_t thread[MAX]; pthread_mutex_t mut; long number=0; int i; void func() { int p=10000000; while(p--){} } void *thread_func() { pthread_mutex_lock(&mut); struct timeval tvStart,tvEnd; gettimeofday(&tvStart,NULL); func(); gettimeofday(&tvEnd,NULL); if(((tvEnd.tv_sec-tvStart.tv_sec)*1000+(tvEnd.tv_usec-tvStart.tv_usec)/1000)>number) { number = (tvEnd.tv_sec-tvStart.tv_sec)*1000000+(tvEnd.tv_usec-tvStart.tv_usec); } printf("每次的时间: %ld微秒\n",number); pthread_mutex_unlock(&mut); sleep(2); pthread_exit(NULL); } void thread_create(void) { for(i=0;i<MAX;i++) { if(pthread_create(&thread[i], NULL, thread_func, NULL)) //comment2 printf("线程%d创建失败!\n",i); else printf("线程%d被创建\n",i); } } void thread_wait(void) { for(i=0;i<MAX;i++) { pthread_join(thread[i],NULL); printf("线程%d已经结束\n",i); } } int main() { //用默认属性初始化互斥锁 pthread_mutex_init(&mut,NULL); printf("主函数创建线程\n"); thread_create(); printf("主函数正在等待线程完成\n"); thread_wait(); printf("time costs:%ld\n微秒",number); return 0; }
改成c++
void thread_wait()
void *thread_func(void *argv)
c改成这样,gcc编译也ok的
无类型的指针,它的类型将由被赋予的值来决定,如果赋予int 型变量的地址或指针,它就是int型。
第一个c多线程,参考: