2019独角兽企业重金招聘Python工程师标准>>>

本节主要讲解siege的线程模型,具体的http请求交互在上一篇文章中讲过了。

main函数中可能会产生以下线程

1->sig_handler线程

2->siege_timer线程

3-》spin_doctor线程

4-》client工作线程

注意:启动工作线程的代码是

result = pthread_create( &(peer[x]), &scope_attr, (void*)client, &(data[x]) );

而对于scope_attr,之前有这样的语句:

pthread_attr_init( &scope_attr )
pthread_attr_setscope( &scope_attr, PTHREAD_SCOPE_SYSTEM );

重点在于PTHREAD_SCOPE_SYSTEM

百度搜了下,这个字段是为了:

绑定状况下,则顾名思义,即某个线程固定的"绑"在一个轻进程之上。被绑定的线程具有较高的响应速度,这是因为CPU时间片的调度是面向轻进程的,绑定的线程可以保证在需要的时候它总有一个轻进程可用。通过设置被绑定的轻进程的优先级和调度级可以使得绑定的线程满足诸如实时反应之类的要求。

作用是为了让线程获得更高的响应速度。

~~~~~~~~~~~

在client线程中,有这么2行代码:

pthread_setcanceltype ( PTHREAD_CANCEL_ASYNCHRONOUS, &type );
pthread_setcancelstate( PTHREAD_CANCEL_ENABLE, &state );

第一个是立即取消,实际上等到被调度后立即取消。

第二个是设置可以取消其运行。

这样的话,别的线程发送停止信号后,接收方线程会被取消执行。

下面分析下sig_handler线程。

sigemptyset(&sigs);sigaddset(&sigs, SIGHUP);sigaddset(&sigs, SIGINT);sigaddset(&sigs, SIGTERM);sigprocmask(SIG_BLOCK, &sigs, NULL);

然后执行sigwait(&sigs, &gotsig);等待信号事件的发生。

然后又启动了spin_doctor线程。

这个线程主要是输出一些字符。

至于siege_timer,则是为了等待超时事件的发生,这个线程是否会启动,

取决于是否配置了time参数,可以在启动时指定-t参数,

线程内的核心语句是:

pthread_cond_timedwait

~~~~~~~~~~~~

更多的线程编程知识,可以百度或者看书

下面的博文讲得也不错:

http://blog.csdn.net/qq276592716/article/details/7325250

转载于:https://my.oschina.net/qiangzigege/blog/224217

Siege的线程模型-基于版本2.56相关推荐

  1. 【Netty】Netty 简介 ( 原生 NIO 弊端 | Netty 框架 | Netty 版本 | 线程模型 | 线程 阻塞 IO 模型 | Reactor 模式引入 )

    文章目录 一. NIO 原生 API 弊端 二. Netty 简介 三. Netty 架构 四. Netty 版本 五. Netty 线程模型 六. 阻塞 IO 线程模型 七. 反应器 ( React ...

  2. 面试官:Netty的线程模型可不是Reactor这么简单

    笔者看来Netty的内核主要包括如下图三个部分: 其各个核心模块主要的职责如下: 内存管理 主要提高高效的内存管理,包含内存分配,内存回收. 网通通道 复制网络通信,例如实现对NIO.OIO等底层JA ...

  3. Netty之线程模型

    Reactor 线程模型: Reactor 是反应堆的意思,Reactor 模型是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式.服务端程序处理传入多路请求,并将它们同步分派给请 ...

  4. 【Flink】Flink 基于 MailBox 实现的 StreamTask 线程模型

    1.概述 转载:Flink 基于 MailBox 实现的 StreamTask 线程模型 先来给介绍一下目前 StreamTask 中基于 MailBox 实现的线程模型,这个模型从 1.9 开始实现 ...

  5. 【Flink】Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型

    1.概述 转载:Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型 相似文章:[Flink]Flink 基于 MailBox 实现的 StreamTask 线程模型 Fl ...

  6. 基于WPF+XMPP的IM程序开发日志 之二 WPF线程模型

    循例地在开始正文前说些废话.正如这篇博客的题目--开发日志,这系列的博客是我在编写这个IM的一些日志,或者另外一个说法:笔记.并不是一些系统的文章,例如"XX学习教程".这些博客里 ...

  7. 线程模型、pthread 系列函数 和 简单多线程服务器端程序

    一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属于1:1模型. (一).N:1用户线程模型 "线程实现"建立在&qu ...

  8. SOFA BOLT源码解析之设计要点-线程模型

    1 设计要点解析 1.1  线程模型 此部分内容主要介绍蚂蚁为什么选择Netty4作为基础网络编程框架,来源于蚂蚁技术团队发布的一篇文章: 文章名称为:蚂蚁通信框架实践: 链接地址为:https:// ...

  9. redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?...

    这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型, 你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什 ...

最新文章

  1. 关于Opengl中将24位BMP图片加入�一个alpha通道并实现透明的问题
  2. Java NIO原理 图文分析及代码实现
  3. js 查找当前元素/this
  4. C#——WPF的菜单栏、工具栏、状态栏DEMO
  5. .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇
  6. 在索引列上正确使用LIKE运算符
  7. ——————————
  8. java script eval_java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)
  9. 微信小程序 抓css,微信小程序css篇
  10. tgp助手登陆服务器未响应,LOL登陆服务器未响应解决方法
  11. 2022-2028年中国美容美发行业现状调研与未来前景趋势报告
  12. 如何让背景图片居中?
  13. 转载 信号量 第六篇
  14. wd移动硬盘不能识别_wd移动硬盘无法识别
  15. 项目经理的能力模型和能力提升的方法
  16. 误删的苹果电脑硬盘和数据库的数据怎么恢复
  17. 如果你已经这样了,那你必须要跳槽了。
  18. python数值类型有哪四个直辖市_博文分类
  19. 【segment-anything】- Meta 开源万物可分割 AI 模型
  20. 中华英才网三年之痒 接受增持还是坚持独立IPO

热门文章

  1. 用java画一个网格_用SolidWorks画一个空心挂钩,这种画法稍微有点麻烦
  2. java sftp 实例_JAVA实现SFTP的实例
  3. 游戏企业的“逆袭”,从用好这套解决方案开始 →
  4. 车主无忧:天下武功,唯快不破,神策让我们快人一步
  5. The road to learning English-Listening
  6. leetcode-581-Shortest Unsorted Continuous Subarray
  7. LinkedList源码分析(基于Java8)
  8. Google发布用于Google Cloud的.Net API
  9. Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)...
  10. Triangular Sums http://acm.nyist.net/JudgeOnline/problem.php?pid=122