mumumuwudi的博客

  • 首页
  • 归档
  • 分类
  • 关于
  • 标签

go (golang) DNS域名解析实现

发表于 2015-09-04   |   分类于 golang
之前使用过GO语言写了一个实时图片下载程序,主要考虑到GO语言的DNS解析对协程支持友好, 即DNS解析时不会阻塞执行线程,只会阻塞当前协程,顺便研究了一下GO的net.LookupHost/ResolveIPAddr实现方式。下面一段描述翻译自go语言的官方文档 https://golang.or ...
阅读全文 »

ub 网络框架的几种线程模型

发表于 2015-08-27   |   分类于 linux

ub是公司不错的网络框架, 使用C语言开发,清晰易懂,不像sofa-rpc使用c++ 开发,语言层面的技巧较多.
个人还是喜欢ub的简单. 本文通过ub框架介绍一下server端开发的常见的几种线程模型.

ub包含5种线程模型,我们挑选了三个比较典型和简单的来讲解一下

xpool   \\ 最简单同步模型

cpool \\ 生产者消费者模型

appool \\ 异步模型

xpool最简单的线程模型:

阅读全文 »

线程间使用条件变量同步正确方式

发表于 2015-08-26   |   分类于 linux
线程间同步标准的使用方式如下: thread1: pthread_mutex_lock(&mutex); while (!condition) pthread_cond_wait(&cond, &mutex); func_1();/* do ...
阅读全文 »

父进程waitpid子进程的一般实现

发表于 2015-08-26   |   分类于 linux
web后台开发中很多框架都是prefork的进程模型的, 包括 php-fpm / flup / gunicorn 等等由主进程 fork 出一堆工作进程, 主进程监督工作进程的存活状态和数量,按照需要重启工作进程主进程的主要工作:1) 回收僵尸子进程2)重启子进程(重启策略看需求),逻辑比较简单, ...
阅读全文 »

简单测试一下go(golang) 和libtask 协程的切换效率

发表于 2015-08-13   |   分类于 golang
简单测试一下go(golang)和libtask协程的切换效率, libtask一个C语言的协程库,是go语言的前身很早期的原型,测试机器是我的mac air 安装的centos虚拟机(只有一个核)代码没有采用任何优化,只是使用默认配置 测试结论:golang 切换100w次 需要 295mslib ...
阅读全文 »

linux 内存中buffer 和cache 的区别

发表于 2015-08-04   |   分类于 linux
page cahce 缓存了页面用来优化文件I/O, buffer cache 缓存了磁盘块用来优化 block I/O.在linux kernel2.4之前,这两个缓存是不同的: 文件在page cache里, 磁盘块在buffer cache里. 这样某些系统调用(mmap)数据需要在两层cac ...
阅读全文 »

Tokyo Cabinet Hash数据库存储和索引结构

发表于 2015-07-31   |   分类于 Tokyo Cabinet

先看图:

阅读全文 »

c-ares 一个C语言的异步DNS解析库

发表于 2015-07-31   |   分类于 linux
c-ares是一个C语言的异步DNS解析库,可以很方便的和使用者的事件循环统一起来,实现DNS的非阻塞异步解析,libcurl, libevent, gevent, nodejs都在使用。 下面摘自Stack Overflow的一个例子:#include <time.h>#include ...
阅读全文 »

FreeBSD Kqueue的实现原理

发表于 2015-07-30   |   分类于 freebsd
kqueue/epoll 是两个网上出现频率比较高的关键字,epoll实现原理及源码网上已经有很多blog分析,关于select/poll/epoll、kqueque的优缺点也不再解释。kqueue实现原理的文章网上资料比较少, 基本上就JonathanLemon的一篇论文, Jonathan Le ...
阅读全文 »

LINUX程序(进程)在内存中的布局

发表于 2015-07-30   |   分类于 linux
翻译自: http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/ 感谢作者, 尤其一些图很漂亮,建议读者亲自读一遍英文.     内存管理是操作系统的核心; 是编程和系统管理的关键部分,在接下来的几 ...
阅读全文 »
1234
mumumuwudi

mumumuwudi

32 日志
10 分类
42 标签
© 2021 mumumuwudi