鉴于poolboy的坑pooler不支持r18,又有在知乎上看到大神推荐worker_pool这个进程池框架(工作者进程在创建时崩溃,worker_pool不受影响),所以研究了下,贴个小例子

my_pool.erl

 -module(my_pool).

 -export([start/, stop/]).
-export([my_overrun_handler/,do_test/,do_crash/]). start()->
wpool:start(),
start_pool(),
ok. stop()->
stop_pool(),
wpool:stop(),
ok. start_pool()->
wpool:start_sup_pool(my_pool,
[
{overrun_warning,},
{
overrun_handler,{?MODULE,my_overrun_handler}
},
{workers, },
{worker, {test_worker, []}}
]
),
ok. stop_pool()->
wpool:stop_pool(my_pool),
ok. my_overrun_handler(Report) ->
io:format("my_overrun_handler ~p~n", [Report]). do_test()->
wpool:call(my_pool,{info},best_worker). do_crash()->
wpool:call(my_pool,{crash},best_worker).

test_worker.erl

 -module(test_worker).

 -behaviour(gen_server).

 -export([start_link/, format_status/]).
-export([init/, handle_call/, handle_cast/,handle_info/, terminate/, code_change/]). -record(state, {}). start_link([Args]) ->
gen_server:start_link(?MODULE, [Args], []). init([Args]) ->
io:format("working thread init ~p,~p~n", [self(), Args]),
process_flag(trap_exit, true),
{ok, #state{}}. handle_call({info}, _From, State) ->
io:format("info~n"),
{reply, _Reply = ok, State};
handle_call({crash}, _From, _State) ->
= ,
{noreply, crash};
handle_call(_Request, _From, State) ->
{reply, _Reply = ok, State}. handle_cast(_Msg, State) ->
{noreply, State}. handle_info({'EXIT', _Pid, Reason}, State) ->
io:format("exit reason ~p~n", [Reason]),
case Reason of
normal ->
io:format("normal exit trapped~n"),
{stop, normal, State};
other ->
io:format("other exit trapped~n"),
{noreply, State}
end;
handle_info(_Info, State) ->
{noreply, State}. terminate(_Reason, _State) ->
io:format("terminate ~p,~p,~p~n", [_Reason, _State, self()]),
ok. code_change(_OldVsn, State, _Extra) ->
{ok, State}. format_status(_Opt, _StatusData) ->
erlang:error(not_implemented).

worker_pool的例子的更多相关文章

  1. SQLServer地址搜索性能优化例子

    这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...

  2. C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)

    第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel, ...

  3. REGEX例子

    作为REGEX的例子,代码9.3显示了一个给定的文件有多少行,具有给定的模式,通过命令行输入(注:有更有效率的方式来实现这个功能,如Unix下的grep命令,在这里只是给出了另一种方式).这个程序像下 ...

  4. CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子

    CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子 本文涉及的VolumeRendering相关的C#代码是从(https://github.com/toolchai ...

  5. 简单例子了解View的事件分发

    什么是事件分发 我们在写自定义ViewGroup或者自定义View的时候经常要处理用户的点击事件,如果我们的View在最底层,他在很多ViewGroup里面,我们如何让我们的点击事件准确传递到View ...

  6. 简单的例子了解自定义ViewGroup(一)

    在Android中,控件可以分为ViewGroup控件与View控件.自定义View控件,我之前的文章已经说过.这次我们主要说一下自定义ViewGroup控件.ViewGroup是作为父控件可以包含多 ...

  7. kqueue例子

    网络服务器通常都使用epoll进行异步IO处理,而开发者通常使用mac,为了方便开发,我把自己的handy库移植到了mac平台上.移植过程中,网上居然没有搜到kqueue的使用例子,让我惊讶不已.为了 ...

  8. 今天有群友不是很清楚htm直接存数据库的危害,我简单举个例子

     通过这个案例就知道为什么不要把原生的html放数据库了  常见的几种转码  常用的几种显示方法 只有原生html和最下面一种弹框了,变成了持久xss 如果是Ajax的方式,请用@Ajax.JavaS ...

  9. ElasticSearch 5学习(5)——第一个例子(很实用)

    想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...

随机推荐

  1. Java BigInteger(大数,ACM比赛专用)

    用c或者C++处理大数比较麻烦,于是决心学习一下JAVA中大数运算. 先下载一个eclipse,具体的用法去问度娘吧 JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮 ...

  2. 启动hadoop

    1.启动前先将主节点下hadoop-2.2.0/hdfs/下,清空,然后新建name文件夹 2.将从节点下hadoop-2.2.0/hdfs/下,清空,然后新建data文件夹 3.hadoop-2.2 ...

  3. ZSDR101-跑成品MRP

    *&---------------------------------------------------------------------**& Report ZSDR101*&a ...

  4. Codeforces Round #366 (Div. 2) A

    A. Hulk time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  5. Soapui 简单学习整理

    post 请求  输入汉字提示错误的问题  ;  如图 将request请求 下的属性 Encoding改为UTF-8

  6. JavaScript substring() 方法

    定义和用法 substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法 stringObject.substring(start,stop) 参数 描述 start 必需.一个非负 ...

  7. Python科学画图小结

    Python画图主要用到matplotlib这个库.具体来说是pylab和pyplot这两个子库.这两个库可以满足基本的画图需求,而条形图,散点图等特殊图,下面再单独具体介绍. 首先给出pylab神器 ...

  8. hive学习笔记_hive的介绍与安装

    一.什么是Hive Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据 ...

  9. JSBinding + SharpKit / 原理篇:内存管理与垃圾回收

    C# 和 JS 都有垃圾回收机制,需要保证 2 者能够分工协作. 类对象 类在C#中是引用类型.我们在 C# 中维护了2个map,保存 C# 对象和 JS 对象的一一对应关系. 举一个例子,看以下代码 ...

  10. /usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h:No such file or directory的解决办法

    在编译32位HDecode时出现如题所示的错误,原因时没有安装32位glibc库导致的: ubuntu: sudo apt-get install libc6-dev-i386 CentOS:yum ...