oxipng/doc/thread_local/index.html
2016-04-20 15:59:23 -04:00

153 lines
No EOL
6.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="rustdoc">
<meta name="description" content="API documentation for the Rust `thread_local` crate.">
<meta name="keywords" content="rust, rustlang, rust-lang, thread_local">
<title>thread_local - Rust</title>
<link rel="stylesheet" type="text/css" href="../rustdoc.css">
<link rel="stylesheet" type="text/css" href="../main.css">
</head>
<body class="rustdoc">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<p class='location'></p><script>window.sidebarCurrent = {name: 'thread_local', ty: 'mod', relpath: '../'};</script>
</nav>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content mod">
<h1 class='fqn'><span class='in-band'>Crate <a class='mod' href=''>thread_local</a></span><span class='out-of-band'><span id='render-detail'>
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a id='src-0' class='srclink' href='../src/thread_local/lib.rs.html#8-438' title='goto source code'>[src]</a></span></h1>
<div class='docblock'><p>Per-object thread-local storage</p>
<p>This library provides the <code>ThreadLocal</code> type which allows a separate copy of
an object to be used for each thread. This allows for per-object
thread-local storage, unlike the standard library&#39;s <code>thread_local!</code> macro
which only allows static thread-local storage.</p>
<p>Per-thread objects are not destroyed when a thread exits. Instead, objects
are only destroyed when the <code>ThreadLocal</code> containing them is destroyed.</p>
<p>A <code>CachedThreadLocal</code> type is also provided which wraps a <code>ThreadLocal</code> but
also uses a special fast path for the first thread that writes into it. The
fast path has very low overhead (&lt;1ns per access) while keeping the same
performance as <code>ThreadLocal</code> for other threads.</p>
<p>Note that since thread IDs are recycled when a thread exits, it is possible
for one thread to retrieve the object of another thread. Since this can only
occur after a thread has exited this does not lead to any race conditions.</p>
<h1 id='example' class='section-header'><a href='#example'>Example</a></h1>
<pre class='rust rust-example-rendered'>
<span class='kw'>use</span> <span class='ident'>thread_local</span>::<span class='ident'>ThreadLocal</span>;
<span class='kw'>let</span> <span class='ident'>tls</span>: <span class='ident'>ThreadLocal</span><span class='op'>&lt;</span><span class='ident'>u32</span><span class='op'>&gt;</span> <span class='op'>=</span> <span class='ident'>ThreadLocal</span>::<span class='ident'>new</span>();
<span class='macro'>assert_eq</span><span class='macro'>!</span>(<span class='ident'>tls</span>.<span class='ident'>get</span>(), <span class='prelude-val'>None</span>);
<span class='macro'>assert_eq</span><span class='macro'>!</span>(<span class='ident'>tls</span>.<span class='ident'>get_or</span>(<span class='op'>||</span> <span class='ident'>Box</span>::<span class='ident'>new</span>(<span class='number'>5</span>)), <span class='kw-2'>&amp;</span><span class='number'>5</span>);
<span class='macro'>assert_eq</span><span class='macro'>!</span>(<span class='ident'>tls</span>.<span class='ident'>get</span>(), <span class='prelude-val'>Some</span>(<span class='kw-2'>&amp;</span><span class='number'>5</span>));</pre>
</div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table>
<tr class=' module-item'>
<td><a class='struct' href='struct.CachedThreadLocal.html'
title='thread_local::CachedThreadLocal'>CachedThreadLocal</a></td>
<td class='docblock short'>
<p>Wrapper around <code>ThreadLocal</code> which adds a fast path for a single thread.</p>
</td>
</tr>
<tr class=' module-item'>
<td><a class='struct' href='struct.ThreadLocal.html'
title='thread_local::ThreadLocal'>ThreadLocal</a></td>
<td class='docblock short'>
<p>Thread-local variable wrapper</p>
</td>
</tr></table></section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt>?</dt>
<dd>Show this help dialog</dd>
<dt>S</dt>
<dd>Focus the search field</dd>
<dt>&larrb;</dt>
<dd>Move up in search results</dd>
<dt>&rarrb;</dt>
<dd>Move down in search results</dd>
<dt>&#9166;</dt>
<dd>Go to active search result</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../";
window.currentCrate = "thread_local";
window.playgroundUrl = "";
</script>
<script src="../jquery.js"></script>
<script src="../main.js"></script>
<script defer src="../search-index.js"></script>
</body>
</html>