Update ABI/API compatibility reports after commit 43b8ddc6af015715b2fbda2052a17b29d15...
[openjpeg.git] / doxygen / thread_8c.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <meta name="generator" content="Doxygen 1.8.11"/>
7 <title>OpenJPEG: thread.c File Reference</title>
8 <link href="tabs.css" rel="stylesheet" type="text/css"/>
9 <script type="text/javascript" src="jquery.js"></script>
10 <script type="text/javascript" src="dynsections.js"></script>
11 <link href="doxygen.css" rel="stylesheet" type="text/css" />
12 </head>
13 <body>
14 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
15 <div id="titlearea">
16 <table cellspacing="0" cellpadding="0">
17  <tbody>
18  <tr style="height: 56px;">
19   <td id="projectalign" style="padding-left: 0.5em;">
20    <div id="projectname">OpenJPEG
21    &#160;<span id="projectnumber">2.4.0</span>
22    </div>
23   </td>
24  </tr>
25  </tbody>
26 </table>
27 </div>
28 <!-- end header part -->
29 <!-- Generated by Doxygen 1.8.11 -->
30   <div id="navrow1" class="tabs">
31     <ul class="tablist">
32       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
33       <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
34       <li><a href="modules.html"><span>Modules</span></a></li>
35       <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
36       <li class="current"><a href="files.html"><span>Files</span></a></li>
37     </ul>
38   </div>
39   <div id="navrow2" class="tabs2">
40     <ul class="tablist">
41       <li><a href="files.html"><span>File&#160;List</span></a></li>
42       <li><a href="globals.html"><span>Globals</span></a></li>
43     </ul>
44   </div>
45 <div id="nav-path" class="navpath">
46   <ul>
47 <li class="navelem"><a class="el" href="dir_43e0a1f539e00dcfa1a6bc4d4fee4fc2.html">home</a></li><li class="navelem"><a class="el" href="dir_cb9b2b419d92b64f7cee83d8faf7a4ab.html">even</a></li><li class="navelem"><a class="el" href="dir_f75d9a0165d6564a1e04793ef847d41d.html">openjpeg</a></li><li class="navelem"><a class="el" href="dir_5f588d7ea139c1aae751d03c13a16064.html">openjpeg</a></li><li class="navelem"><a class="el" href="dir_378f732e812ef6cbaaae22e96a4fa79f.html">src</a></li><li class="navelem"><a class="el" href="dir_19dcb5713315405a27e1bde75a489a4c.html">lib</a></li><li class="navelem"><a class="el" href="dir_54e5bc4f0640fea590afaf04f4d9c88d.html">openjp2</a></li>  </ul>
48 </div>
49 </div><!-- top -->
50 <div class="header">
51   <div class="summary">
52 <a href="#nested-classes">Data Structures</a> &#124;
53 <a href="#typedef-members">Typedefs</a> &#124;
54 <a href="#enum-members">Enumerations</a> &#124;
55 <a href="#func-members">Functions</a>  </div>
56   <div class="headertitle">
57 <div class="title">thread.c File Reference</div>  </div>
58 </div><!--header-->
59 <div class="contents">
60 <div class="textblock"><code>#include &lt;assert.h&gt;</code><br />
61 <code>#include &quot;<a class="el" href="opj__includes_8h_source.html">opj_includes.h</a>&quot;</code><br />
62 </div><table class="memberdecls">
63 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
64 Data Structures</h2></td></tr>
65 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopj__tls__key__val__t.html">opj_tls_key_val_t</a></td></tr>
66 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
67 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopj__tls__t.html">opj_tls_t</a></td></tr>
68 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
69 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopj__worker__thread__job__t.html">opj_worker_thread_job_t</a></td></tr>
70 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
71 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopj__worker__thread__t.html">opj_worker_thread_t</a></td></tr>
72 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
73 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopj__job__list__t.html">opj_job_list_t</a></td></tr>
74 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
75 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopj__worker__thread__list__t.html">opj_worker_thread_list_t</a></td></tr>
76 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
77 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a></td></tr>
78 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
79 </table><table class="memberdecls">
80 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
81 Typedefs</h2></td></tr>
82 <tr class="memitem:a49bc29f76a9aaa7d5429ca2aa658d042"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structopj__job__list__t.html">opj_job_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#a49bc29f76a9aaa7d5429ca2aa658d042">opj_job_list_t</a></td></tr>
83 <tr class="separator:a49bc29f76a9aaa7d5429ca2aa658d042"><td class="memSeparator" colspan="2">&#160;</td></tr>
84 <tr class="memitem:a7e5ebd302ebe1fec27a59e0a97f3775d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structopj__worker__thread__list__t.html">opj_worker_thread_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#a7e5ebd302ebe1fec27a59e0a97f3775d">opj_worker_thread_list_t</a></td></tr>
85 <tr class="separator:a7e5ebd302ebe1fec27a59e0a97f3775d"><td class="memSeparator" colspan="2">&#160;</td></tr>
86 </table><table class="memberdecls">
87 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
88 Enumerations</h2></td></tr>
89 <tr class="memitem:a72b07be38efb141bb1f0456227d233e5"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5">opj_worker_thread_state</a> { <a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5a837ff250630d32ebcbdec8ab7545cd23">OPJWTS_OK</a>, 
90 <a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5a3e1ea93366aedb1abcd0498bf72db68a">OPJWTS_STOP</a>, 
91 <a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5a6ef08c3281ba796adc681df793f69dfd">OPJWTS_ERROR</a>
92  }</td></tr>
93 <tr class="separator:a72b07be38efb141bb1f0456227d233e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
94 </table><table class="memberdecls">
95 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
96 Functions</h2></td></tr>
97 <tr class="memitem:aae69d6e8a731757a983888c4047d3e3b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a> <a class="el" href="openjpeg_8h.html#aedc1e23ea6654d0cc416bc390687458b">OPJ_CALLCONV</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#aae69d6e8a731757a983888c4047d3e3b">opj_has_thread_support</a> (void)</td></tr>
98 <tr class="memdesc:aae69d6e8a731757a983888c4047d3e3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns if the library is built with thread support.  <a href="#aae69d6e8a731757a983888c4047d3e3b">More...</a><br /></td></tr>
99 <tr class="separator:aae69d6e8a731757a983888c4047d3e3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
100 <tr class="memitem:a93ce856805936340ca26e98bcf3f4996"><td class="memItemLeft" align="right" valign="top">int <a class="el" href="openjpeg_8h.html#aedc1e23ea6654d0cc416bc390687458b">OPJ_CALLCONV</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#a93ce856805936340ca26e98bcf3f4996">opj_get_num_cpus</a> (void)</td></tr>
101 <tr class="memdesc:a93ce856805936340ca26e98bcf3f4996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of virtual CPUs.  <a href="#a93ce856805936340ca26e98bcf3f4996">More...</a><br /></td></tr>
102 <tr class="separator:a93ce856805936340ca26e98bcf3f4996"><td class="memSeparator" colspan="2">&#160;</td></tr>
103 <tr class="memitem:gaa81ea27e801a8c0cf453b256ab38e067"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___t_h_r_e_a_d.html#ga29120af1ce48d5ecd651795f2e427755">opj_mutex_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gaa81ea27e801a8c0cf453b256ab38e067">opj_mutex_create</a> (void)</td></tr>
104 <tr class="memdesc:gaa81ea27e801a8c0cf453b256ab38e067"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a mutex.  <a href="group___t_h_r_e_a_d.html#gaa81ea27e801a8c0cf453b256ab38e067">More...</a><br /></td></tr>
105 <tr class="separator:gaa81ea27e801a8c0cf453b256ab38e067"><td class="memSeparator" colspan="2">&#160;</td></tr>
106 <tr class="memitem:gab38a90b92a1d294f7e1886e36a405518"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gab38a90b92a1d294f7e1886e36a405518">opj_mutex_lock</a> (<a class="el" href="group___t_h_r_e_a_d.html#ga29120af1ce48d5ecd651795f2e427755">opj_mutex_t</a> *mutex)</td></tr>
107 <tr class="memdesc:gab38a90b92a1d294f7e1886e36a405518"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lock/acquire the mutex.  <a href="group___t_h_r_e_a_d.html#gab38a90b92a1d294f7e1886e36a405518">More...</a><br /></td></tr>
108 <tr class="separator:gab38a90b92a1d294f7e1886e36a405518"><td class="memSeparator" colspan="2">&#160;</td></tr>
109 <tr class="memitem:gacf1f5a5f7f7257663505af02b717272c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gacf1f5a5f7f7257663505af02b717272c">opj_mutex_unlock</a> (<a class="el" href="group___t_h_r_e_a_d.html#ga29120af1ce48d5ecd651795f2e427755">opj_mutex_t</a> *mutex)</td></tr>
110 <tr class="memdesc:gacf1f5a5f7f7257663505af02b717272c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unlock/release the mutex.  <a href="group___t_h_r_e_a_d.html#gacf1f5a5f7f7257663505af02b717272c">More...</a><br /></td></tr>
111 <tr class="separator:gacf1f5a5f7f7257663505af02b717272c"><td class="memSeparator" colspan="2">&#160;</td></tr>
112 <tr class="memitem:ga66757c34c788b873ad9acfb60a5e008b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga66757c34c788b873ad9acfb60a5e008b">opj_mutex_destroy</a> (<a class="el" href="group___t_h_r_e_a_d.html#ga29120af1ce48d5ecd651795f2e427755">opj_mutex_t</a> *mutex)</td></tr>
113 <tr class="memdesc:ga66757c34c788b873ad9acfb60a5e008b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a mutex.  <a href="group___t_h_r_e_a_d.html#ga66757c34c788b873ad9acfb60a5e008b">More...</a><br /></td></tr>
114 <tr class="separator:ga66757c34c788b873ad9acfb60a5e008b"><td class="memSeparator" colspan="2">&#160;</td></tr>
115 <tr class="memitem:ga7f8a4c1ce6d9ad2dde1d293fad317522"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___t_h_r_e_a_d.html#ga439cd27c17f11fc56a911a126811fb87">opj_cond_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga7f8a4c1ce6d9ad2dde1d293fad317522">opj_cond_create</a> (void)</td></tr>
116 <tr class="memdesc:ga7f8a4c1ce6d9ad2dde1d293fad317522"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a condition.  <a href="group___t_h_r_e_a_d.html#ga7f8a4c1ce6d9ad2dde1d293fad317522">More...</a><br /></td></tr>
117 <tr class="separator:ga7f8a4c1ce6d9ad2dde1d293fad317522"><td class="memSeparator" colspan="2">&#160;</td></tr>
118 <tr class="memitem:ga6edf64f08cd0b48299800852d52245d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga6edf64f08cd0b48299800852d52245d6">opj_cond_wait</a> (<a class="el" href="group___t_h_r_e_a_d.html#ga439cd27c17f11fc56a911a126811fb87">opj_cond_t</a> *cond, <a class="el" href="group___t_h_r_e_a_d.html#ga29120af1ce48d5ecd651795f2e427755">opj_mutex_t</a> *mutex)</td></tr>
119 <tr class="memdesc:ga6edf64f08cd0b48299800852d52245d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for the condition to be signaled.  <a href="group___t_h_r_e_a_d.html#ga6edf64f08cd0b48299800852d52245d6">More...</a><br /></td></tr>
120 <tr class="separator:ga6edf64f08cd0b48299800852d52245d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
121 <tr class="memitem:ga0f3687b35d6f3c395e1156a8499d1632"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga0f3687b35d6f3c395e1156a8499d1632">opj_cond_signal</a> (<a class="el" href="group___t_h_r_e_a_d.html#ga439cd27c17f11fc56a911a126811fb87">opj_cond_t</a> *cond)</td></tr>
122 <tr class="memdesc:ga0f3687b35d6f3c395e1156a8499d1632"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal waiting threads on a condition.  <a href="group___t_h_r_e_a_d.html#ga0f3687b35d6f3c395e1156a8499d1632">More...</a><br /></td></tr>
123 <tr class="separator:ga0f3687b35d6f3c395e1156a8499d1632"><td class="memSeparator" colspan="2">&#160;</td></tr>
124 <tr class="memitem:gafba4c2356f6d070d43e5f0d5c71fdbee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gafba4c2356f6d070d43e5f0d5c71fdbee">opj_cond_destroy</a> (<a class="el" href="group___t_h_r_e_a_d.html#ga439cd27c17f11fc56a911a126811fb87">opj_cond_t</a> *cond)</td></tr>
125 <tr class="memdesc:gafba4c2356f6d070d43e5f0d5c71fdbee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a condition.  <a href="group___t_h_r_e_a_d.html#gafba4c2356f6d070d43e5f0d5c71fdbee">More...</a><br /></td></tr>
126 <tr class="separator:gafba4c2356f6d070d43e5f0d5c71fdbee"><td class="memSeparator" colspan="2">&#160;</td></tr>
127 <tr class="memitem:ga541be683ba651c8244bde3f0d3650c92"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___t_h_r_e_a_d.html#gaed72b7b75acb6eaeb620085b01ee365b">opj_thread_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga541be683ba651c8244bde3f0d3650c92">opj_thread_create</a> (<a class="el" href="group___t_h_r_e_a_d.html#gae5f9aa8219645e0e836aaf0c453db624">opj_thread_fn</a> thread_fn, void *user_data)</td></tr>
128 <tr class="memdesc:ga541be683ba651c8244bde3f0d3650c92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new thread.  <a href="group___t_h_r_e_a_d.html#ga541be683ba651c8244bde3f0d3650c92">More...</a><br /></td></tr>
129 <tr class="separator:ga541be683ba651c8244bde3f0d3650c92"><td class="memSeparator" colspan="2">&#160;</td></tr>
130 <tr class="memitem:gad49986b56da75f8609b7c940c17f713f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gad49986b56da75f8609b7c940c17f713f">opj_thread_join</a> (<a class="el" href="group___t_h_r_e_a_d.html#gaed72b7b75acb6eaeb620085b01ee365b">opj_thread_t</a> *thread)</td></tr>
131 <tr class="memdesc:gad49986b56da75f8609b7c940c17f713f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for a thread to be finished and release associated resources to the thread handle.  <a href="group___t_h_r_e_a_d.html#gad49986b56da75f8609b7c940c17f713f">More...</a><br /></td></tr>
132 <tr class="separator:gad49986b56da75f8609b7c940c17f713f"><td class="memSeparator" colspan="2">&#160;</td></tr>
133 <tr class="memitem:a28308877c7160bae4a21d2b1c8bddfe0"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structopj__tls__t.html">opj_tls_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#a28308877c7160bae4a21d2b1c8bddfe0">opj_tls_new</a> (void)</td></tr>
134 <tr class="separator:a28308877c7160bae4a21d2b1c8bddfe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
135 <tr class="memitem:a8f4ee11fc0faa44d49f2c341cbf3dc79"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#a8f4ee11fc0faa44d49f2c341cbf3dc79">opj_tls_destroy</a> (<a class="el" href="structopj__tls__t.html">opj_tls_t</a> *tls)</td></tr>
136 <tr class="separator:a8f4ee11fc0faa44d49f2c341cbf3dc79"><td class="memSeparator" colspan="2">&#160;</td></tr>
137 <tr class="memitem:ga90caa0ff9c1e54033ef1e3010faf03a9"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga90caa0ff9c1e54033ef1e3010faf03a9">opj_tls_get</a> (<a class="el" href="structopj__tls__t.html">opj_tls_t</a> *tls, int key)</td></tr>
138 <tr class="memdesc:ga90caa0ff9c1e54033ef1e3010faf03a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a thread local value corresponding to the provided key.  <a href="group___t_h_r_e_a_d.html#ga90caa0ff9c1e54033ef1e3010faf03a9">More...</a><br /></td></tr>
139 <tr class="separator:ga90caa0ff9c1e54033ef1e3010faf03a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
140 <tr class="memitem:gab1b97098aabc89f98eca8f8f7274f3e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gab1b97098aabc89f98eca8f8f7274f3e7">opj_tls_set</a> (<a class="el" href="structopj__tls__t.html">opj_tls_t</a> *tls, int key, void *value, <a class="el" href="group___t_h_r_e_a_d.html#ga38f8cdfd288c8ff8963444403549ad6c">opj_tls_free_func</a> opj_free_func)</td></tr>
141 <tr class="memdesc:gab1b97098aabc89f98eca8f8f7274f3e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a thread local value corresponding to the provided key.  <a href="group___t_h_r_e_a_d.html#gab1b97098aabc89f98eca8f8f7274f3e7">More...</a><br /></td></tr>
142 <tr class="separator:gab1b97098aabc89f98eca8f8f7274f3e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
143 <tr class="memitem:acdca1ecb372546840fdd9d5d5badce07"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#acdca1ecb372546840fdd9d5d5badce07">opj_thread_pool_setup</a> (<a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *tp, int num_threads)</td></tr>
144 <tr class="separator:acdca1ecb372546840fdd9d5d5badce07"><td class="memSeparator" colspan="2">&#160;</td></tr>
145 <tr class="memitem:a57e6dc05f2283639a2ec0b6884d9691c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structopj__worker__thread__job__t.html">opj_worker_thread_job_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#a57e6dc05f2283639a2ec0b6884d9691c">opj_thread_pool_get_next_job</a> (<a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *tp, <a class="el" href="structopj__worker__thread__t.html">opj_worker_thread_t</a> *worker_thread, <a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a> signal_job_finished)</td></tr>
146 <tr class="separator:a57e6dc05f2283639a2ec0b6884d9691c"><td class="memSeparator" colspan="2">&#160;</td></tr>
147 <tr class="memitem:ga24a3a1b343df1168a3beb57babfa0916"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga24a3a1b343df1168a3beb57babfa0916">opj_thread_pool_create</a> (int num_threads)</td></tr>
148 <tr class="memdesc:ga24a3a1b343df1168a3beb57babfa0916"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new thread pool.  <a href="group___t_h_r_e_a_d.html#ga24a3a1b343df1168a3beb57babfa0916">More...</a><br /></td></tr>
149 <tr class="separator:ga24a3a1b343df1168a3beb57babfa0916"><td class="memSeparator" colspan="2">&#160;</td></tr>
150 <tr class="memitem:ac0a73d8572dbdb91b3a9a10b053f23ec"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="thread_8c.html#ac0a73d8572dbdb91b3a9a10b053f23ec">opj_worker_thread_function</a> (void *user_data)</td></tr>
151 <tr class="separator:ac0a73d8572dbdb91b3a9a10b053f23ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
152 <tr class="memitem:gaf389ecb3a583a30077fc546eef767c89"><td class="memItemLeft" align="right" valign="top"><a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gaf389ecb3a583a30077fc546eef767c89">opj_thread_pool_submit_job</a> (<a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *tp, <a class="el" href="group___t_h_r_e_a_d.html#gaf29983f3245378c30edbef61fe22913b">opj_job_fn</a> job_fn, void *user_data)</td></tr>
153 <tr class="memdesc:gaf389ecb3a583a30077fc546eef767c89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Submit a new job to be run by one of the thread in the thread pool.  <a href="group___t_h_r_e_a_d.html#gaf389ecb3a583a30077fc546eef767c89">More...</a><br /></td></tr>
154 <tr class="separator:gaf389ecb3a583a30077fc546eef767c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 <tr class="memitem:ga0ced26c80598e49bf3a964bb802130f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga0ced26c80598e49bf3a964bb802130f1">opj_thread_pool_wait_completion</a> (<a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *tp, int max_remaining_jobs)</td></tr>
156 <tr class="memdesc:ga0ced26c80598e49bf3a964bb802130f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.  <a href="group___t_h_r_e_a_d.html#ga0ced26c80598e49bf3a964bb802130f1">More...</a><br /></td></tr>
157 <tr class="separator:ga0ced26c80598e49bf3a964bb802130f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
158 <tr class="memitem:ga4faef98a6b8495c63e9e5ce9cf0c3fc3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#ga4faef98a6b8495c63e9e5ce9cf0c3fc3">opj_thread_pool_get_thread_count</a> (<a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *tp)</td></tr>
159 <tr class="memdesc:ga4faef98a6b8495c63e9e5ce9cf0c3fc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of threads associated with the thread pool.  <a href="group___t_h_r_e_a_d.html#ga4faef98a6b8495c63e9e5ce9cf0c3fc3">More...</a><br /></td></tr>
160 <tr class="separator:ga4faef98a6b8495c63e9e5ce9cf0c3fc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
161 <tr class="memitem:gae44e8b9258d0baa19e3671a382faa33e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___t_h_r_e_a_d.html#gae44e8b9258d0baa19e3671a382faa33e">opj_thread_pool_destroy</a> (<a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *tp)</td></tr>
162 <tr class="memdesc:gae44e8b9258d0baa19e3671a382faa33e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a thread pool.  <a href="group___t_h_r_e_a_d.html#gae44e8b9258d0baa19e3671a382faa33e">More...</a><br /></td></tr>
163 <tr class="separator:gae44e8b9258d0baa19e3671a382faa33e"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 </table>
165 <h2 class="groupheader">Typedef Documentation</h2>
166 <a class="anchor" id="a49bc29f76a9aaa7d5429ca2aa658d042"></a>
167 <div class="memitem">
168 <div class="memproto">
169       <table class="memname">
170         <tr>
171           <td class="memname">typedef struct <a class="el" href="structopj__job__list__t.html">opj_job_list_t</a> <a class="el" href="structopj__job__list__t.html">opj_job_list_t</a></td>
172         </tr>
173       </table>
174 </div><div class="memdoc">
175
176 </div>
177 </div>
178 <a class="anchor" id="a7e5ebd302ebe1fec27a59e0a97f3775d"></a>
179 <div class="memitem">
180 <div class="memproto">
181       <table class="memname">
182         <tr>
183           <td class="memname">typedef struct <a class="el" href="structopj__worker__thread__list__t.html">opj_worker_thread_list_t</a> <a class="el" href="structopj__worker__thread__list__t.html">opj_worker_thread_list_t</a></td>
184         </tr>
185       </table>
186 </div><div class="memdoc">
187
188 </div>
189 </div>
190 <h2 class="groupheader">Enumeration Type Documentation</h2>
191 <a class="anchor" id="a72b07be38efb141bb1f0456227d233e5"></a>
192 <div class="memitem">
193 <div class="memproto">
194       <table class="memname">
195         <tr>
196           <td class="memname">enum <a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5">opj_worker_thread_state</a></td>
197         </tr>
198       </table>
199 </div><div class="memdoc">
200 <table class="fieldtable">
201 <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a72b07be38efb141bb1f0456227d233e5a837ff250630d32ebcbdec8ab7545cd23"></a>OPJWTS_OK&#160;</td><td class="fielddoc">
202 </td></tr>
203 <tr><td class="fieldname"><a class="anchor" id="a72b07be38efb141bb1f0456227d233e5a3e1ea93366aedb1abcd0498bf72db68a"></a>OPJWTS_STOP&#160;</td><td class="fielddoc">
204 </td></tr>
205 <tr><td class="fieldname"><a class="anchor" id="a72b07be38efb141bb1f0456227d233e5a6ef08c3281ba796adc681df793f69dfd"></a>OPJWTS_ERROR&#160;</td><td class="fielddoc">
206 </td></tr>
207 </table>
208
209 </div>
210 </div>
211 <h2 class="groupheader">Function Documentation</h2>
212 <a class="anchor" id="a93ce856805936340ca26e98bcf3f4996"></a>
213 <div class="memitem">
214 <div class="memproto">
215       <table class="memname">
216         <tr>
217           <td class="memname">int <a class="el" href="openjpeg_8h.html#aedc1e23ea6654d0cc416bc390687458b">OPJ_CALLCONV</a> opj_get_num_cpus </td>
218           <td>(</td>
219           <td class="paramtype">void&#160;</td>
220           <td class="paramname"></td><td>)</td>
221           <td></td>
222         </tr>
223       </table>
224 </div><div class="memdoc">
225
226 <p>Return the number of virtual CPUs. </p>
227
228 <p>Referenced by <a class="el" href="j2k_8c.html#ac8b636dfb2c65311872afe7de0ee121b">opj_j2k_get_default_thread_count()</a>.</p>
229
230 </div>
231 </div>
232 <a class="anchor" id="aae69d6e8a731757a983888c4047d3e3b"></a>
233 <div class="memitem">
234 <div class="memproto">
235       <table class="memname">
236         <tr>
237           <td class="memname"><a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a> <a class="el" href="openjpeg_8h.html#aedc1e23ea6654d0cc416bc390687458b">OPJ_CALLCONV</a> opj_has_thread_support </td>
238           <td>(</td>
239           <td class="paramtype">void&#160;</td>
240           <td class="paramname"></td><td>)</td>
241           <td></td>
242         </tr>
243       </table>
244 </div><div class="memdoc">
245
246 <p>Returns if the library is built with thread support. </p>
247 <p>OPJ_TRUE if mutex, condition, thread, thread pool are available. </p>
248
249 <p>References <a class="el" href="openjpeg_8h.html#ac672bfd7db39c609e828acb07a321964">OPJ_FALSE</a>.</p>
250
251 <p>Referenced by <a class="el" href="j2k_8c.html#ac8b636dfb2c65311872afe7de0ee121b">opj_j2k_get_default_thread_count()</a>, and <a class="el" href="group___j2_k.html#gabecf91393e6703f8be5006b19df1be22">opj_j2k_set_threads()</a>.</p>
252
253 </div>
254 </div>
255 <a class="anchor" id="a57e6dc05f2283639a2ec0b6884d9691c"></a>
256 <div class="memitem">
257 <div class="memproto">
258 <table class="mlabels">
259   <tr>
260   <td class="mlabels-left">
261       <table class="memname">
262         <tr>
263           <td class="memname">static <a class="el" href="structopj__worker__thread__job__t.html">opj_worker_thread_job_t</a> * opj_thread_pool_get_next_job </td>
264           <td>(</td>
265           <td class="paramtype"><a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *&#160;</td>
266           <td class="paramname"><em>tp</em>, </td>
267         </tr>
268         <tr>
269           <td class="paramkey"></td>
270           <td></td>
271           <td class="paramtype"><a class="el" href="structopj__worker__thread__t.html">opj_worker_thread_t</a> *&#160;</td>
272           <td class="paramname"><em>worker_thread</em>, </td>
273         </tr>
274         <tr>
275           <td class="paramkey"></td>
276           <td></td>
277           <td class="paramtype"><a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a>&#160;</td>
278           <td class="paramname"><em>signal_job_finished</em>&#160;</td>
279         </tr>
280         <tr>
281           <td></td>
282           <td>)</td>
283           <td></td><td></td>
284         </tr>
285       </table>
286   </td>
287   <td class="mlabels-right">
288 <span class="mlabels"><span class="mlabel">static</span></span>  </td>
289   </tr>
290 </table>
291 </div><div class="memdoc">
292
293 <p>References <a class="el" href="structopj__worker__thread__t.html#a8e7cdff9dab59b5be9ed46436437f28a">opj_worker_thread_t::cond</a>, <a class="el" href="structopj__thread__pool__t.html#a19d0f595937228552fe62c69cb2f6c44">opj_thread_pool_t::cond</a>, <a class="el" href="structopj__job__list__t.html#a84b556f2984f8f7a4b38cb0a075d3d1e">opj_job_list_t::job</a>, <a class="el" href="structopj__thread__pool__t.html#aff15e4a4599fc823762f8d3c28d8353d">opj_thread_pool_t::job_queue</a>, <a class="el" href="structopj__worker__thread__t.html#a6cf93c9b46f4b51b9247a179f49fc796">opj_worker_thread_t::marked_as_waiting</a>, <a class="el" href="structopj__worker__thread__t.html#a2ba43db98feae7de2aaed97d08ec55ce">opj_worker_thread_t::mutex</a>, <a class="el" href="structopj__thread__pool__t.html#a818a719866334770dda95c675cb73d63">opj_thread_pool_t::mutex</a>, <a class="el" href="structopj__job__list__t.html#a27d174268d6050639a4032780172d87f">opj_job_list_t::next</a>, <a class="el" href="structopj__worker__thread__list__t.html#ac0a28fac91ec02c49898229a1122aa67">opj_worker_thread_list_t::next</a>, <a class="el" href="group___t_h_r_e_a_d.html#ga0f3687b35d6f3c395e1156a8499d1632">opj_cond_signal()</a>, <a class="el" href="group___t_h_r_e_a_d.html#ga6edf64f08cd0b48299800852d52245d6">opj_cond_wait()</a>, <a class="el" href="openjpeg_8h.html#ac672bfd7db39c609e828acb07a321964">OPJ_FALSE</a>, <a class="el" href="group___m_i_s_c.html#ga2bd00e2482ae36197631bde0665cfdfe">opj_free()</a>, <a class="el" href="group___m_i_s_c.html#ga49c70931cbed786f6eef5f095bcb2917">opj_malloc()</a>, <a class="el" href="group___t_h_r_e_a_d.html#gab38a90b92a1d294f7e1886e36a405518">opj_mutex_lock()</a>, <a class="el" href="group___t_h_r_e_a_d.html#gacf1f5a5f7f7257663505af02b717272c">opj_mutex_unlock()</a>, <a class="el" href="openjpeg_8h.html#a04830036d767cba56cbf5ae5bdc481d3">OPJ_TRUE</a>, <a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5a6ef08c3281ba796adc681df793f69dfd">OPJWTS_ERROR</a>, <a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5a3e1ea93366aedb1abcd0498bf72db68a">OPJWTS_STOP</a>, <a class="el" href="structopj__thread__pool__t.html#ad84a2e09419498cf81c8994f0441b131">opj_thread_pool_t::pending_jobs_count</a>, <a class="el" href="structopj__thread__pool__t.html#ae68571d1cf6eae577c75df49c2827438">opj_thread_pool_t::signaling_threshold</a>, <a class="el" href="structopj__thread__pool__t.html#a3ee9c2691cf72fb90bf662490830b72b">opj_thread_pool_t::state</a>, <a class="el" href="structopj__thread__pool__t.html#abad6b35fb3cc6cd8aaaf523de9a4a187">opj_thread_pool_t::waiting_worker_thread_count</a>, <a class="el" href="structopj__thread__pool__t.html#a50c4caa87ba2a6767d909898cc92b37a">opj_thread_pool_t::waiting_worker_thread_list</a>, <a class="el" href="structopj__worker__thread__list__t.html#af36b36ba7fc3ab5febe59faf30c86c7f">opj_worker_thread_list_t::worker_thread</a>, and <a class="el" href="structopj__thread__pool__t.html#a43fd14e3ba8409a0fac589a6dd4e7ee1">opj_thread_pool_t::worker_threads_count</a>.</p>
294
295 <p>Referenced by <a class="el" href="thread_8c.html#ac0a73d8572dbdb91b3a9a10b053f23ec">opj_worker_thread_function()</a>.</p>
296
297 </div>
298 </div>
299 <a class="anchor" id="acdca1ecb372546840fdd9d5d5badce07"></a>
300 <div class="memitem">
301 <div class="memproto">
302 <table class="mlabels">
303   <tr>
304   <td class="mlabels-left">
305       <table class="memname">
306         <tr>
307           <td class="memname">static <a class="el" href="openjpeg_8h.html#abb5dad6294f4611f1925388e919b16f4">OPJ_BOOL</a> opj_thread_pool_setup </td>
308           <td>(</td>
309           <td class="paramtype"><a class="el" href="structopj__thread__pool__t.html">opj_thread_pool_t</a> *&#160;</td>
310           <td class="paramname"><em>tp</em>, </td>
311         </tr>
312         <tr>
313           <td class="paramkey"></td>
314           <td></td>
315           <td class="paramtype">int&#160;</td>
316           <td class="paramname"><em>num_threads</em>&#160;</td>
317         </tr>
318         <tr>
319           <td></td>
320           <td>)</td>
321           <td></td><td></td>
322         </tr>
323       </table>
324   </td>
325   <td class="mlabels-right">
326 <span class="mlabels"><span class="mlabel">static</span></span>  </td>
327   </tr>
328 </table>
329 </div><div class="memdoc">
330
331 <p>References <a class="el" href="structopj__worker__thread__t.html#a8e7cdff9dab59b5be9ed46436437f28a">opj_worker_thread_t::cond</a>, <a class="el" href="structopj__thread__pool__t.html#a19d0f595937228552fe62c69cb2f6c44">opj_thread_pool_t::cond</a>, <a class="el" href="structopj__worker__thread__t.html#a6cf93c9b46f4b51b9247a179f49fc796">opj_worker_thread_t::marked_as_waiting</a>, <a class="el" href="structopj__worker__thread__t.html#a2ba43db98feae7de2aaed97d08ec55ce">opj_worker_thread_t::mutex</a>, <a class="el" href="structopj__thread__pool__t.html#a818a719866334770dda95c675cb73d63">opj_thread_pool_t::mutex</a>, <a class="el" href="group___m_i_s_c.html#ga7fe6dfcb0a623dbec30daf0f48624bf7">opj_calloc()</a>, <a class="el" href="group___t_h_r_e_a_d.html#ga7f8a4c1ce6d9ad2dde1d293fad317522">opj_cond_create()</a>, <a class="el" href="group___t_h_r_e_a_d.html#gafba4c2356f6d070d43e5f0d5c71fdbee">opj_cond_destroy()</a>, <a class="el" href="group___t_h_r_e_a_d.html#ga6edf64f08cd0b48299800852d52245d6">opj_cond_wait()</a>, <a class="el" href="openjpeg_8h.html#ac672bfd7db39c609e828acb07a321964">OPJ_FALSE</a>, <a class="el" href="group___t_h_r_e_a_d.html#gaa81ea27e801a8c0cf453b256ab38e067">opj_mutex_create()</a>, <a class="el" href="group___t_h_r_e_a_d.html#ga66757c34c788b873ad9acfb60a5e008b">opj_mutex_destroy()</a>, <a class="el" href="group___t_h_r_e_a_d.html#gab38a90b92a1d294f7e1886e36a405518">opj_mutex_lock()</a>, <a class="el" href="group___t_h_r_e_a_d.html#gacf1f5a5f7f7257663505af02b717272c">opj_mutex_unlock()</a>, <a class="el" href="group___t_h_r_e_a_d.html#ga541be683ba651c8244bde3f0d3650c92">opj_thread_create()</a>, <a class="el" href="openjpeg_8h.html#a04830036d767cba56cbf5ae5bdc481d3">OPJ_TRUE</a>, <a class="el" href="thread_8c.html#ac0a73d8572dbdb91b3a9a10b053f23ec">opj_worker_thread_function()</a>, <a class="el" href="thread_8c.html#a72b07be38efb141bb1f0456227d233e5a6ef08c3281ba796adc681df793f69dfd">OPJWTS_ERROR</a>, <a class="el" href="structopj__thread__pool__t.html#a3ee9c2691cf72fb90bf662490830b72b">opj_thread_pool_t::state</a>, <a class="el" href="structopj__worker__thread__t.html#a7ef79b815efbb4ff8d49f3ed4f677073">opj_worker_thread_t::thread</a>, <a class="el" href="structopj__worker__thread__t.html#a81267837ab1b9934e3a1cc64680959e7">opj_worker_thread_t::tp</a>, <a class="el" href="structopj__thread__pool__t.html#abad6b35fb3cc6cd8aaaf523de9a4a187">opj_thread_pool_t::waiting_worker_thread_count</a>, <a class="el" href="structopj__thread__pool__t.html#adb012d263904a4f62812ed7d30b0a47e">opj_thread_pool_t::worker_threads</a>, and <a class="el" href="structopj__thread__pool__t.html#a43fd14e3ba8409a0fac589a6dd4e7ee1">opj_thread_pool_t::worker_threads_count</a>.</p>
332
333 <p>Referenced by <a class="el" href="group___t_h_r_e_a_d.html#ga24a3a1b343df1168a3beb57babfa0916">opj_thread_pool_create()</a>.</p>
334
335 </div>
336 </div>
337 <a class="anchor" id="a8f4ee11fc0faa44d49f2c341cbf3dc79"></a>
338 <div class="memitem">
339 <div class="memproto">
340 <table class="mlabels">
341   <tr>
342   <td class="mlabels-left">
343       <table class="memname">
344         <tr>
345           <td class="memname">static void opj_tls_destroy </td>
346           <td>(</td>
347           <td class="paramtype"><a class="el" href="structopj__tls__t.html">opj_tls_t</a> *&#160;</td>
348           <td class="paramname"><em>tls</em></td><td>)</td>
349           <td></td>
350         </tr>
351       </table>
352   </td>
353   <td class="mlabels-right">
354 <span class="mlabels"><span class="mlabel">static</span></span>  </td>
355   </tr>
356 </table>
357 </div><div class="memdoc">
358
359 <p>References <a class="el" href="structopj__tls__t.html#adfd2bdbeb80b7f067288709b3c3fc1aa">opj_tls_t::key_val</a>, <a class="el" href="structopj__tls__t.html#ae2c441fd26b7ae11a86163d5bebb4d2e">opj_tls_t::key_val_count</a>, <a class="el" href="group___m_i_s_c.html#ga2bd00e2482ae36197631bde0665cfdfe">opj_free()</a>, <a class="el" href="structopj__tls__key__val__t.html#a3a1ff12d54b55c7d3e30f31b10ad261e">opj_tls_key_val_t::opj_free_func</a>, and <a class="el" href="structopj__tls__key__val__t.html#a58ca4c6fe1d0342a77b89bb240a6f549">opj_tls_key_val_t::value</a>.</p>
360
361 <p>Referenced by <a class="el" href="group___t_h_r_e_a_d.html#gae44e8b9258d0baa19e3671a382faa33e">opj_thread_pool_destroy()</a>, and <a class="el" href="thread_8c.html#ac0a73d8572dbdb91b3a9a10b053f23ec">opj_worker_thread_function()</a>.</p>
362
363 </div>
364 </div>
365 <a class="anchor" id="a28308877c7160bae4a21d2b1c8bddfe0"></a>
366 <div class="memitem">
367 <div class="memproto">
368 <table class="mlabels">
369   <tr>
370   <td class="mlabels-left">
371       <table class="memname">
372         <tr>
373           <td class="memname">static <a class="el" href="structopj__tls__t.html">opj_tls_t</a>* opj_tls_new </td>
374           <td>(</td>
375           <td class="paramtype">void&#160;</td>
376           <td class="paramname"></td><td>)</td>
377           <td></td>
378         </tr>
379       </table>
380   </td>
381   <td class="mlabels-right">
382 <span class="mlabels"><span class="mlabel">static</span></span>  </td>
383   </tr>
384 </table>
385 </div><div class="memdoc">
386
387 <p>References <a class="el" href="group___m_i_s_c.html#ga7fe6dfcb0a623dbec30daf0f48624bf7">opj_calloc()</a>.</p>
388
389 <p>Referenced by <a class="el" href="group___t_h_r_e_a_d.html#ga24a3a1b343df1168a3beb57babfa0916">opj_thread_pool_create()</a>, and <a class="el" href="thread_8c.html#ac0a73d8572dbdb91b3a9a10b053f23ec">opj_worker_thread_function()</a>.</p>
390
391 </div>
392 </div>
393 <a class="anchor" id="ac0a73d8572dbdb91b3a9a10b053f23ec"></a>
394 <div class="memitem">
395 <div class="memproto">
396 <table class="mlabels">
397   <tr>
398   <td class="mlabels-left">
399       <table class="memname">
400         <tr>
401           <td class="memname">static void opj_worker_thread_function </td>
402           <td>(</td>
403           <td class="paramtype">void *&#160;</td>
404           <td class="paramname"><em>user_data</em></td><td>)</td>
405           <td></td>
406         </tr>
407       </table>
408   </td>
409   <td class="mlabels-right">
410 <span class="mlabels"><span class="mlabel">static</span></span>  </td>
411   </tr>
412 </table>
413 </div><div class="memdoc">
414
415 <p>References <a class="el" href="structopj__worker__thread__job__t.html#ab9dc542136b4596b711e3be011abdd4d">opj_worker_thread_job_t::job_fn</a>, <a class="el" href="openjpeg_8h.html#ac672bfd7db39c609e828acb07a321964">OPJ_FALSE</a>, <a class="el" href="group___m_i_s_c.html#ga2bd00e2482ae36197631bde0665cfdfe">opj_free()</a>, <a class="el" href="thread_8c.html#a57e6dc05f2283639a2ec0b6884d9691c">opj_thread_pool_get_next_job()</a>, <a class="el" href="thread_8c.html#a8f4ee11fc0faa44d49f2c341cbf3dc79">opj_tls_destroy()</a>, <a class="el" href="thread_8c.html#a28308877c7160bae4a21d2b1c8bddfe0">opj_tls_new()</a>, <a class="el" href="openjpeg_8h.html#a04830036d767cba56cbf5ae5bdc481d3">OPJ_TRUE</a>, <a class="el" href="structopj__worker__thread__t.html#a81267837ab1b9934e3a1cc64680959e7">opj_worker_thread_t::tp</a>, and <a class="el" href="structopj__worker__thread__job__t.html#a89f225764ee25dabc5e374ed277cd286">opj_worker_thread_job_t::user_data</a>.</p>
416
417 <p>Referenced by <a class="el" href="thread_8c.html#acdca1ecb372546840fdd9d5d5badce07">opj_thread_pool_setup()</a>.</p>
418
419 </div>
420 </div>
421 </div><!-- contents -->
422 <!-- start footer part -->
423 <hr class="footer"/><address class="footer"><small>
424 Generated by &#160;<a href="http://www.doxygen.org/index.html">
425 <img class="footer" src="doxygen.png" alt="doxygen"/>
426 </a> 1.8.11
427 </small></address>
428 </body>
429 </html>