Linux C 程序设计多线程基础篇
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux C 程序设计多线程基础篇相关的知识,希望对你有一定的参考价值。
Linux C 程序设计多线程基础篇
题记:因为 Linux 网络入侵检测系统的设计与实现希望使用多线程,因此希望系统的学习一下 Linux C程序设计多线程的知识
注意事项:因为 pthraed 库不是 Linux 系统默认的库,因此在进行多线程开发的时候,需要加上头文件#include <pthread.h>,编译时要加参数 -lpthread;了;gcc thread.c -o thread -lpthread。
进程和线程:
进程是程序执行,资源分配的基本单位,每个进程都拥有自己的数据段,代码段,堆栈段,在进行进程切换时有比较复杂的上下文切换
线程是进程独立的一条运行路线,是处理器调度的最小单位,也称为轻量级进程,可以对进程的内存空间,资源进行访问,并与该进程其它线程共享内存空间,代码,资源。
线程相关的执行状态和存储变量放在线程控制表中,一个进程可以有多个线程,有多个线程控制表及堆栈寄存器,共享一个用户地址空间
重要名词:
线程标识:线程 ID,进程 ID 在整个系统中是唯一的,线程 ID,只在所属进程的环境中有效;线程标识使用数据结构 pthread_t 表示;pthread_t 不能作为整数处理,Linux 使用无符号长整形数表示pthread_t.
重要函数:
pthread_self()
函数原型:pthread_t phtread_self(void)
参数:无
返回值:(正在)调用线程的线程 ID
2. pthread_equal()
函数原型:int pthread_equal(pthread_t tidOne,pthread_t tidTwo)
参数:2 个 线程 ID
返回值:相等则返回非 0 值,否则返回 0
#include <stdio.h> #include <stdlib.h> #include <pthread.h> int main(){ pthread_t thisId; thisId = pthread_self(); printf("当前线程 ID = %lu.\n",thisId); if(pthread_equal(thisId,pthread_self())){ printf("Yes,equal\n"); }else{ printf("No,not equal\n"); } return 0; }
3. 创建线程
调用该线程函数的入口点
使用函数 pthread_create(),创建线程后,就开始运行相关线程函数
函数 pthread_create()
函数原型:int pthread_create(pthread_t *thread,pthread_attr_t *attr,void*(*start_routine)(void *),void *arg);
参数:thread:线程标识;attr 线程属性设置,通常设为 NULL;start_routine:线程函数的起始地址,是一个指向 void 的指针作为参数和返回值的函数指针;arg:传递给 start_runtine 的函数
返回值:成功返回 0,失败返回失败码
pthread_create(&tid,NULL,thrd_func,NULL)
本文出自 “SuperHakce” 博客,请务必保留此出处http://superhakce.blog.51cto.com/6671637/1899141
以上是关于Linux C 程序设计多线程基础篇的主要内容,如果未能解决你的问题,请参考以下文章