blob: 3c19f1d2bfca846271f7f91d32dd7b25797683c7 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::WorkerThread Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Crashpad
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1WorkerThread.html">WorkerThread</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classcrashpad_1_1WorkerThread-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::WorkerThread Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A <a class="el" href="classcrashpad_1_1WorkerThread.html" title="A WorkerThread executes its Delegate&#39;s DoWork method repeatedly on a dedicated thread at a set time i...">WorkerThread</a> executes its <a class="el" href="classcrashpad_1_1WorkerThread_1_1Delegate.html" title="An interface for doing work on a WorkerThread.">Delegate</a>'s DoWork method repeatedly on a dedicated thread at a set time interval.
<a href="classcrashpad_1_1WorkerThread.html#details">More...</a></p>
<p><code>#include &quot;util/thread/worker_thread.h&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1WorkerThread_1_1Delegate.html">Delegate</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An interface for doing work on a <a class="el" href="classcrashpad_1_1WorkerThread.html" title="A WorkerThread executes its Delegate&#39;s DoWork method repeatedly on a dedicated thread at a set time i...">WorkerThread</a>. <a href="classcrashpad_1_1WorkerThread_1_1Delegate.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acd19c649b9eb4440f6685b016c01b1f7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1WorkerThread.html#acd19c649b9eb4440f6685b016c01b1f7">WorkerThread</a> (double work_interval, <a class="el" href="classcrashpad_1_1WorkerThread_1_1Delegate.html">Delegate</a> *delegate)</td></tr>
<tr class="memdesc:acd19c649b9eb4440f6685b016c01b1f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcrashpad_1_1WorkerThread.html" title="A WorkerThread executes its Delegate&#39;s DoWork method repeatedly on a dedicated thread at a set time i...">WorkerThread</a> that is not yet running. <a href="classcrashpad_1_1WorkerThread.html#acd19c649b9eb4440f6685b016c01b1f7">More...</a><br /></td></tr>
<tr class="separator:acd19c649b9eb4440f6685b016c01b1f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d5bb2e8fe18e4ca391b09a09d1ea23f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1WorkerThread.html#a5d5bb2e8fe18e4ca391b09a09d1ea23f">Start</a> (double initial_work_delay)</td></tr>
<tr class="memdesc:a5d5bb2e8fe18e4ca391b09a09d1ea23f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the worker thread. <a href="classcrashpad_1_1WorkerThread.html#a5d5bb2e8fe18e4ca391b09a09d1ea23f">More...</a><br /></td></tr>
<tr class="separator:a5d5bb2e8fe18e4ca391b09a09d1ea23f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fb859504e561e443236960adbf5fad6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1WorkerThread.html#a6fb859504e561e443236960adbf5fad6">Stop</a> ()</td></tr>
<tr class="memdesc:a6fb859504e561e443236960adbf5fad6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the worker thread from running. <a href="classcrashpad_1_1WorkerThread.html#a6fb859504e561e443236960adbf5fad6">More...</a><br /></td></tr>
<tr class="separator:a6fb859504e561e443236960adbf5fad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af30d5046ff7606f8d6b3fc5bf61143e0"><td class="memItemLeft" align="right" valign="top"><a id="af30d5046ff7606f8d6b3fc5bf61143e0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1WorkerThread.html#af30d5046ff7606f8d6b3fc5bf61143e0">DoWorkNow</a> ()</td></tr>
<tr class="memdesc:af30d5046ff7606f8d6b3fc5bf61143e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interrupts a <em>work_interval</em> to execute the work function immediately. This invokes <a class="el" href="classcrashpad_1_1WorkerThread_1_1Delegate.html#a91492f3dae15910a62d1980f0ec618c3" title="The work function executed by the WorkerThread every work interval.">Delegate::DoWork()</a> on the thread, without waiting for the current <em>work_interval</em> to expire. After the delegate is invoked, the <a class="el" href="classcrashpad_1_1WorkerThread.html" title="A WorkerThread executes its Delegate&#39;s DoWork method repeatedly on a dedicated thread at a set time i...">WorkerThread</a> will start waiting for a new <em>work_interval</em>. <br /></td></tr>
<tr class="separator:af30d5046ff7606f8d6b3fc5bf61143e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66eb9551438d4f4e034a0f6bcc738f21"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1WorkerThread.html#a66eb9551438d4f4e034a0f6bcc738f21">is_running</a> () const</td></tr>
<tr class="separator:a66eb9551438d4f4e034a0f6bcc738f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a92b0883b4782570f94ad98c2b66bd2d8"><td class="memItemLeft" align="right" valign="top"><a id="a92b0883b4782570f94ad98c2b66bd2d8"></a>
static constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1WorkerThread.html#a92b0883b4782570f94ad98c2b66bd2d8">kIndefiniteWait</a> = Semaphore::kIndefiniteWait</td></tr>
<tr class="memdesc:a92b0883b4782570f94ad98c2b66bd2d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">A delay or interval argument that causes an indefinite wait. <br /></td></tr>
<tr class="separator:a92b0883b4782570f94ad98c2b66bd2d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a9313453d17f59a246e0dbc35d942e9f3"><td class="memItemLeft" align="right" valign="top"><a id="a9313453d17f59a246e0dbc35d942e9f3"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>internal::WorkerThreadImpl</b></td></tr>
<tr class="separator:a9313453d17f59a246e0dbc35d942e9f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A <a class="el" href="classcrashpad_1_1WorkerThread.html" title="A WorkerThread executes its Delegate&#39;s DoWork method repeatedly on a dedicated thread at a set time i...">WorkerThread</a> executes its <a class="el" href="classcrashpad_1_1WorkerThread_1_1Delegate.html" title="An interface for doing work on a WorkerThread.">Delegate</a>'s DoWork method repeatedly on a dedicated thread at a set time interval. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="acd19c649b9eb4440f6685b016c01b1f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd19c649b9eb4440f6685b016c01b1f7">&#9670;&nbsp;</a></span>WorkerThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">crashpad::WorkerThread::WorkerThread </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>work_interval</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1WorkerThread_1_1Delegate.html">WorkerThread::Delegate</a> *&#160;</td>
<td class="paramname"><em>delegate</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new <a class="el" href="classcrashpad_1_1WorkerThread.html" title="A WorkerThread executes its Delegate&#39;s DoWork method repeatedly on a dedicated thread at a set time i...">WorkerThread</a> that is not yet running. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">work_interval</td><td>The time interval in seconds at which the <em>delegate</em> runs. The interval counts from the completion of <a class="el" href="classcrashpad_1_1WorkerThread_1_1Delegate.html#a91492f3dae15910a62d1980f0ec618c3" title="The work function executed by the WorkerThread every work interval.">Delegate::DoWork()</a> to the next invocation. This can be <a class="el" href="classcrashpad_1_1WorkerThread.html#a92b0883b4782570f94ad98c2b66bd2d8" title="A delay or interval argument that causes an indefinite wait.">kIndefiniteWait</a> if work should only be done when <a class="el" href="classcrashpad_1_1WorkerThread.html#af30d5046ff7606f8d6b3fc5bf61143e0" title="Interrupts a work_interval to execute the work function immediately. This invokes Delegate::DoWork() ...">DoWorkNow()</a> is called. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">delegate</td><td>The work delegate to invoke every interval. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a66eb9551438d4f4e034a0f6bcc738f21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66eb9551438d4f4e034a0f6bcc738f21">&#9670;&nbsp;</a></span>is_running()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::WorkerThread::is_running </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the thread is running, <code>false</code> if it is not. </dd></dl>
</div>
</div>
<a id="a5d5bb2e8fe18e4ca391b09a09d1ea23f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d5bb2e8fe18e4ca391b09a09d1ea23f">&#9670;&nbsp;</a></span>Start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void crashpad::WorkerThread::Start </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>initial_work_delay</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts the worker thread. </p>
<p>This may not be called if the thread <a class="el" href="classcrashpad_1_1WorkerThread.html#a66eb9551438d4f4e034a0f6bcc738f21">is_running()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">initial_work_delay</td><td>The amount of time in seconds to wait before invoking the <em>delegate</em> for the first time. Pass <code>0</code> for no delay. This can be <a class="el" href="classcrashpad_1_1WorkerThread.html#a92b0883b4782570f94ad98c2b66bd2d8" title="A delay or interval argument that causes an indefinite wait.">kIndefiniteWait</a> if work should not be done until <a class="el" href="classcrashpad_1_1WorkerThread.html#af30d5046ff7606f8d6b3fc5bf61143e0" title="Interrupts a work_interval to execute the work function immediately. This invokes Delegate::DoWork() ...">DoWorkNow()</a> is called. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6fb859504e561e443236960adbf5fad6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fb859504e561e443236960adbf5fad6">&#9670;&nbsp;</a></span>Stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void crashpad::WorkerThread::Stop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stops the worker thread from running. </p>
<p>This may only be called if the thread <a class="el" href="classcrashpad_1_1WorkerThread.html#a66eb9551438d4f4e034a0f6bcc738f21">is_running()</a>.</p>
<p>If the work function is currently executing, this will not interrupt it. This method stops any future work from occurring. This method is safe to call from any thread with the exception of the worker thread itself, as this joins the thread. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>util/thread/worker_thread.h</li>
<li>util/thread/worker_thread.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>