linux网络编程之posix线程(二)
继续接着上次的posix线程来学习:

回顾一下创建线程的函数:


pthread_att_t属性变量是需要进行初始化才能够用的,一定初始化了属性变量,它就包含了线程的多种属性的值,那到底有哪些属性了,下面一一来介绍:

其中第二个参数的指定值可以通过man帮助来了解到:

下面用程序来实验一下:

编译运行:




【注意】:在设置栈大小时,一般第二个参数设置为0表示用系统定义的栈的大小,如果指定我们自己设定的栈的大小可能会导致一些移植性的问题,所以一般情况下栈的大小不会去设置。




首先需要了解线程调度竞争范围:

那默认线程是什么竞争范围呢?用程序来查看:






这意味着新创建的线程跟调者用线程是否是一样的调度策略,如果设置成继承的则拥有一样的调度策略:







其中调到了线程模型,这里介绍一下,其实线程模型有三种:








其中需要说明一下,int pthread_setconcurrency(int new_level)设置并发级别,并不意味着线程的并发数是new_level,仅仅只是设置了一个并发级别,并且只是给内核一个提示而已,并非真正的提供new_level个核心线程来映射用户线程:






上面的这些概念还是有些生涩,下面来用一个实例程序来进一步理解,在写程序之前,需要用到特定数据的一些函数:
找一个空位来创建特定数据:

删除特定数据:

给特定数据设定值及获取特定数据里面的值:

下面来看程序:

然后再创建两个线程出来,来使用特定数据:

接下来编写线程处理函数:



下面编译运行:

从结果来看:

下面再来介绍一对函数,如下:

它代表init_routine函数只在第一个线程进入的时候被执行一次,下面来修改一下程序:

那如果希望只有第一个线程进来时创建,而其它线程进来不再创建,那这个函数就派上用场了,修改程序如下:


好了,这次先学到这,下节继续~~
linux网络编程之posix线程(二)的更多相关文章
- linux网络编程之posix线程(一)
今天继续学习posix IPC相关的东东,消息队列和共享内存已经学习过,接下来学习线程相关的知识,下面开始: [注意]:创建失败这时会返回错误码,而通常函数创建失败都会返回-1,然后错误码会保存在er ...
- linux网络编程之posix条件变量
今天来学习posix的最后一个相关知识----条件变量,言归正传. 下面用一个图来进一步描述条件变量的作用: 为什么呢? 这实际上可以解决生产者与消费者问题,而且对于缓冲区是无界的是一种比较理解的解决 ...
- linux网络编程之posix信号量与互斥锁
继上次学习了posix线程之后,这次来讨论一下posix信号量与互斥锁相关的知识: 跟posix消息队列,共享内存的打开,关闭,删除操作一样,不过,上面的函数是对有名信号量进行操作,通过man帮助可以 ...
- linux网络编程之posix消息队列
在前面已经学习了System v相关的IPC,今天起学习posix相关的IPC,关于这两者的内容区别,简单回顾一下: 而今天先学习posix的消息队列,下面开始: 接下来则编写程序来创建一个posix ...
- linux网络编程之posix共享内存
今天继续研究posix IPC对象,这次主要是学习一下posix共享内存的使用方法,下面开始: 下面编写程序来创建一个共享内存: 编译运行: 那posix的共享内存存放在哪里呢?上节中学的posix的 ...
- linux网络编程之socket编程(二)
今天继续对socket编程进行研究,这里会真正开如用socket写一个小例子,进入正题: TCP客户/服务器模型: 关于这个模型的流程这里就不多说了,比较容易理解,下面则利用这种模型来编写一个实际 ...
- linux网络编程之shutdown() 与 close()函数详解
linux网络编程之shutdown() 与 close()函数详解 参考TCPIP网络编程和UNP: shutdown函数不能关闭套接字,只能关闭输入和输出流,然后发送EOF,假设套接字为A,那么这 ...
- linux网络编程之socket编程(四)
经过两周的等待,终于可以回归我正常的学习之旅了,表哥来北京了在我这暂住,晚上回家了基本在和他聊天,周末带他在北京城到处乱转,几乎剥夺了我自由学习的时间了,不过,亲人之情还是很难得的,工作学习并不是生活 ...
- (十)Linux 网络编程之ioctl函数
1.介绍 Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的 ...
随机推荐
- Samba访问控制smb.conf
访问控制 Samba的访问控制通过hosts allow(配置允许访问的客户端).hosts deny(配置拒绝访问的客户端)两个参数实现. 在Samba中使用hosts allow.hosts de ...
- Ehcache配置文件ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http:// ...
- 030 Android 第三方开源下拉框:NiceSpinner的使用+自定义Button样式+shape绘制控件背景图+图片选择器(selector)
1.NiceSpinner下拉框控件介绍 Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框 ...
- 039 Android SQLite数据库(了解)
1.介绍 注意:当有大量相似结构的数据需要存储的时候,需要使用数据库. 2.SQLiteOpenHelper简介 注意:数据库的创建方法总结: (1)定义一个类继承SQLiteOpenHelper o ...
- struts笔记1
框架:所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面 SHH:strust spring hibernate; SSM:springmvc sp ...
- (一)Spring Security Demo 登陆与退出
文章目录 配置springSecurityFilterChain过滤器 配置身份验证 加载配置 登陆项目 退出 下面的代码需要spring环境的支持: 看这个系列博客之前,需要这个博客,大概了解下 s ...
- 长乐培训Day5
T1 圆圈舞蹈 题目 [题目描述] 熊大妈的奶牛在时针的带领下,围成了一个圈跳舞.由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺时针走和逆时 ...
- 20 闭包、nonlocal
闭包的概念 闭包就是能够读取其他函数内部变量的函数. 从模块级别调用函数内部的局部变量. 闭包 = 函数+环境变量(函数外部的变量) 闭包存在的条件 闭包必须返回一个函数 被返回的函数必须调用环境变量 ...
- Linux下实现web服务器
说明:暂时只是实现了静态网页的响应 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include < ...
- springboot基础、注解等
SpringBoot 1.springboot概念 Spring Boot是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. ...