多线程编程
来源:互联网 发布:百度seo排位 编辑:程序博客网 时间:2024/04/26 03:44
进程内的线程共享全局变量和内存.此时就要考虑共享变量的互斥问题.
使用线程时,需要加入<pthread.h>头文件.且编译时需链接pthread库.
创建线程需调用pthread_create函数.
int pthread_create(pthread_t *thread,const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg).
参数说明:1.thread 线程ID. 2.attr属性脱离,可汇合,调度策略.该参数可以为NULL. 3.start_routine 线程处理函数. 4.arg 给线程例程传参数.
以下是个多线程处理的测试例子。
#include <stdio.h>
#include <pthread.h>
int iCur=0; /**//*当前的线程索引*/
int iArr[100]; /**//*线程使用的全局的变量*/
thread_t thr[9];
/**//*线程处理函数*/
void f_thread(void *p)
...{/**//*p传进来的是线程索引*/
int iTmp;
iTmp=(int)(*p);
iArr[iTmp]=100;
}
int main()
...{
int i;
for (i=0;i<10;i++)
...{
pthread_create(thr[i],NULL,(void*)f_thread,(void*)i);
}
return 1;
}
#include <pthread.h>
int iCur=0; /**//*当前的线程索引*/
int iArr[100]; /**//*线程使用的全局的变量*/
thread_t thr[9];
/**//*线程处理函数*/
void f_thread(void *p)
...{/**//*p传进来的是线程索引*/
int iTmp;
iTmp=(int)(*p);
iArr[iTmp]=100;
}
int main()
...{
int i;
for (i=0;i<10;i++)
...{
pthread_create(thr[i],NULL,(void*)f_thread,(void*)i);
}
return 1;
}