zoukankan      html  css  js  c++  java
  • linux网络编程之posix线程(二)

    继续接着上次的posix线程来学习:

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

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

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

    下面用程序来实验一下:

    编译运行:

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

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

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

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

     

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

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

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

    找一个空位来创建特定数据:

    删除特定数据:

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

     

    下面来看程序:

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

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

    下面编译运行:

    从结果来看:

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

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

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

    好了,这次先学到这,下节继续~~

  • 相关阅读:
    linux nfs
    gsoap
    error: ignoring return value of 编译错误处理
    SSIS可靠性和扩展性—错误输出
    SSIS中的脚本—脚本组件
    SQL点滴24—监测表的变化(转载)
    SSIS中的脚本—脚本任务
    SSIS可靠性和扩展性—简介
    SSIS中的脚本—表达式
    SSIS可靠性和扩展性—可扩展性
  • 原文地址:https://www.cnblogs.com/webor2006/p/4243168.html
Copyright © 2011-2022 走看看