1e18a033bSKonstantin Ananyev
2e18a033bSKonstantin Ananyev/*
3e18a033bSKonstantin Ananyev * Copyright (C) Nginx, Inc.
4e18a033bSKonstantin Ananyev * Copyright (C) Valentin V. Bartenev
5e18a033bSKonstantin Ananyev */
6e18a033bSKonstantin Ananyev
7e18a033bSKonstantin Ananyev
8e18a033bSKonstantin Ananyev#ifndef _NGX_THREAD_POOL_H_INCLUDED_
9e18a033bSKonstantin Ananyev#define _NGX_THREAD_POOL_H_INCLUDED_
10e18a033bSKonstantin Ananyev
11e18a033bSKonstantin Ananyev
12e18a033bSKonstantin Ananyev#include <ngx_config.h>
13e18a033bSKonstantin Ananyev#include <ngx_core.h>
14e18a033bSKonstantin Ananyev#include <ngx_event.h>
15e18a033bSKonstantin Ananyev
16e18a033bSKonstantin Ananyev
17e18a033bSKonstantin Ananyevstruct ngx_thread_task_s {
18e18a033bSKonstantin Ananyev    ngx_thread_task_t   *next;
19e18a033bSKonstantin Ananyev    ngx_uint_t           id;
20e18a033bSKonstantin Ananyev    void                *ctx;
21e18a033bSKonstantin Ananyev    void               (*handler)(void *data, ngx_log_t *log);
22e18a033bSKonstantin Ananyev    ngx_event_t          event;
23e18a033bSKonstantin Ananyev};
24e18a033bSKonstantin Ananyev
25e18a033bSKonstantin Ananyev
26e18a033bSKonstantin Ananyevtypedef struct ngx_thread_pool_s  ngx_thread_pool_t;
27e18a033bSKonstantin Ananyev
28e18a033bSKonstantin Ananyev
29e18a033bSKonstantin Ananyevngx_thread_pool_t *ngx_thread_pool_add(ngx_conf_t *cf, ngx_str_t *name);
30e18a033bSKonstantin Ananyevngx_thread_pool_t *ngx_thread_pool_get(ngx_cycle_t *cycle, ngx_str_t *name);
31e18a033bSKonstantin Ananyev
32e18a033bSKonstantin Ananyevngx_thread_task_t *ngx_thread_task_alloc(ngx_pool_t *pool, size_t size);
33e18a033bSKonstantin Ananyevngx_int_t ngx_thread_task_post(ngx_thread_pool_t *tp, ngx_thread_task_t *task);
34e18a033bSKonstantin Ananyev
35e18a033bSKonstantin Ananyev
36e18a033bSKonstantin Ananyev#endif /* _NGX_THREAD_POOL_H_INCLUDED_ */
37