线程总结以及函数实现
来源:互联网 发布:淘宝店铺店招图片尺寸 编辑:程序博客网 时间:2024/06/05 10:12
线程是程序执行的最小单位,每个进程都是一个独立的运行单位,拥有各自的权利和责任
线程的优点:
1、开销小
2、线程间方便通信,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可直接为其他线程所用
线程API
1、线程的创建
pthread_create
函数的作用:创建一个进程
函数的原型:pthread_create(pthread_t *thread,pthread_addr_t *addr,void *(*start_routine)(void *),void *arg)
函数的参数:thread:线程的标识符
attr:线程的属性,一般设为NULL
start_routine:线程的执行函数
arg:传入到线程执行函数的参数
返回值:成功:0;出错:-1
头文件:#include<pthread.h>
函数的实现函数:
#include <stdio.h>
#include <pthread.h>
void *myThread1(void)
{
int i;
for (i=0; i<100; i++)
{
printf("This is the 1st pthread,created by zieckey.\n");
sleep(1);//Let this thread to sleep 1 second,and then continue to run
}
}
void *myThread2(void)
{
int i;
for (i=0; i<100; i++)
{
printf("This is the 2st pthread,created by zieckey.\n");
sleep(1);
}
}
int main()
{
int i=0, ret=0;
pthread_t id1,id2;
/*创建线程1*/
ret = pthread_create(&id1, NULL, (void*)myThread1, NULL);
if (ret)
{
printf("Create pthread error!\n");
return 1;
}
/*创建线程2*/
ret = pthread_create(&id2, NULL, (void*)myThread2, NULL);
if (ret)
{
printf("Create pthread error!\n");
return 1;
}
pthread_join(id1, NULL);
pthread_join(id2, NULL);
return 0;
}
2、线程的退出
pthread_exit
函数的作用:线程的退出
函数的原型:void pthread_exit(void *retval)
3、pthread_join
函数的作用:等待进程的退出
函数的原型:int pthread_join(pthread_t th,void **thread_return)
函数的参数:th:线程的标识符
thread_return:不为NULL时,存储线程结束时的返回值
返回值:成功:0;出错:-1
函数实现代码:
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
void *thread(void *str)
{
int i;
for (i = 0; i < 10; ++i)
{
sleep(2);
printf( "This in the thread : %d\n" , i );
}
return NULL;
}
int main()
{
pthread_t pth;
int i;
int ret = pthread_create(&pth, NULL, thread, (void *)(i));
pthread_join(pth, NULL);
printf("123\n");
for (i = 0; i < 10; ++i)
{
sleep(1);
printf( "This in the main : %d\n" , i );
}
return 0;
}
线程之间资源的竞争:
1、互斥量
2、信号灯
3、条件变量
- 线程总结以及函数实现
- 线程池总结以及实现
- 线程函数总结
- linux线程函数总结
- Linux 线程操作函数总结
- Linux 线程属性函数总结
- Linux 线程属性函数总结
- 线程的入口函数总结
- Linux 线程属性函数总结
- Linux 线程属性函数总结
- Linux 线程操作函数总结
- Linux 线程属性函数总结
- linux 线程属性函数总结
- Linux 线程操作函数总结
- java多线程以及线程池技术总结
- C# 多参数线程以及匿名函数
- 【Linux】线程安全以及可重入函数
- C多线程编程以及线程函数
- 可变参数列表详解(内附求平均数和实现简单的printf)
- Python序列:字符串、列表和元组(二)
- Hibernate简介
- IO之转换流
- Java文件类操作实例总结
- 线程总结以及函数实现
- 2016.10.29
- 二分入门——poj 1064 cable master
- hdu 2045 递推
- C Primer Plus学习 六十四 总结本书
- leetCode练习(110)
- 几何知识点
- linux安装nginx详解
- (8)const 限定符