鉴于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. HDU 5944 暴力

    Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)T ...

  2. 横向滚动条展示 css

    <div class="shuaixuan" style="overflow:hidden;">    <div style="ov ...

  3. jquery中prop()方法和attr()方法的区别

    最近在用jquery的时候遇到一个问题,那就是attr()方法,发现这个方法有时候使用会有一些说不出原因的问题.翻翻自己之前笔记发现,还有个函数prop(). 这两个函数都可以用来获取属性. jque ...

  4. Linux驱动设计—— 中断与时钟@request_irq参数详解

    request_irq函数定义 /*include <linux/interrupt.h>*/ int request_irq(unsigned int irq, irq_handler_ ...

  5. php 代码大全

    1.子类访问父类静态方法 <?php class A{ static function loadById(){ $class_name = get_called_class(); $model ...

  6. java DecimalFormat

    public class Test{ public static void main(String[] args) throws Exception{ /*DecimalFormat参数,如果是0则会 ...

  7. QueryRunner使用

    在相继学习了JDBC和数据库操作之后,我们明显感到编写JDBC代码并非一件轻松的事儿.为了帮助我们更高效的学习工作,从JDBC的繁重代码中解脱出来,老佟给我们详尽介绍了一个简化JDBC操作的组件——D ...

  8. mysql学习之-逻辑架构

    mysql逻辑架构图: 第一层,服务层(为客户端服务):为请求做连接处理,授权认证,安全等. 1.  每个连接的查询都在一个进程中的线程完成. 2.  服务器负责缓存线程,所以服务层不需要为每个连接新 ...

  9. 七牛云存储Python SDK使用教程 - 上传策略详解

    文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k  ...

  10. jQuery根据文本设置select选中失效问题

    $("#select_id option[text='jQuery']").attr("selected", true) 失效 text是Jquery关键字,不 ...