Linux内核学习9:多线程程序设计
来源:互联网 发布:为什么mac不能玩lol 编辑:程序博客网 时间:2024/05/20 14:19
在学习多线程程序设计之前,先要了解下多进程与多线程之间的一个比较:
与多进程相比较而言,多线程比较“节俭”:
(1):启动一个进程,必须得给它分配独立的地址空间,需要建立更多的数据来维护它的代码段、堆栈段与数据段。
但是线程却不需要,同一个进程下的线程是共享数据段的。
(2):线程之间的彼此切换时间所需要的时间也远远小于进程间切换所需要的时间。
1:Linux下的Pthread
Linux系统下的多线程遵循POSIX线程接口,称之为Pthread
编写Linux下的多线程程序,需要:头文件:Pthread.h
需要的库:libpthread.a2:多线程程序设计
1)创建线程——pthread_create
#include <pthread.h>int pthread_create(pthread_t *restrict thread,const pthread_attr_t *restruct attr,void *(*start_routine) (void *),void *restruct arg);
参数说明:
thread:指向线程标识符的指针
attr:用来设置线程属性,不必设置属性时设置为NULL;
start_routine:线程运行时函数的起始地址
arg:运行函数的参数
实例:
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h> //静态链接库,编译时加上-lpthreadstruct menber{int a;char *s;};void *create(void *arg){ struct menber *temp; temp=(struct menber *)arg; printf("menber->a = %d \n",temp->a); printf("menber->s = %s \n",temp->s); return (void *)0;}int main(){ pthread_t tidp; int error; struct menber *b; b=(struct menber*)malloc(sizeof(struct menber)); b->a=4; b->s="zieckey"; error = pthread_create(&tidp,NULL,create,(void*)b);//创建线程并运行线程执行函数 if(error) { printf("pthread is not create...\n"); return -1; } sleep(1);//进程睡眠1秒,使线程执行完后进程才会结束 printf("pthread is created...\n"); return 0;}
0 0
- Linux内核学习9:多线程程序设计
- 《linux程序设计》多线程学习
- Linux多线程程序设计学习笔记
- 《Linux内核与程序设计》实验学习笔记
- 10、linux多线程程序设计
- LINUX 多线程程序设计
- linux多线程程序设计
- linux程序设计---多线程
- Linux多线程程序设计
- linux程序设计---多线程
- linux多线程程序设计
- Linux多线程程序设计
- Linux多线程程序设计
- Linux多线程程序设计
- Linux多线程程序设计
- Linux 多线程程序设计-LS13
- 多线程程序设计学习
- linux内核多线程
- 关于内核中export_symbols()用后warning修改。
- 背包问题(动态优化)
- 堆排序
- 【OpenGL】详解第一个OpenGL程序
- Android JNI和NDK有什么区别
- Linux内核学习9:多线程程序设计
- 数据挖掘领域顶级会议期刊及其分析
- Spring MVC 下以JSON格式向后抬传数据
- hdu1710 Binary Tree Traversals
- A definition for the symbol '<symbolName>' could not be located
- SAP 后台数据表记录删除的三种方法
- [LeetCode]Maximum Product Subarray
- Bestcoder #11
- 多字节存储顺序