~ubuntu-branches/ubuntu/precise/brian/precise

« back to all changes in this revision

Viewing changes to dev/ideas/pthreads/win32/pthread.h

  • Committer: Bazaar Package Importer
  • Author(s): Yaroslav Halchenko
  • Date: 2010-11-02 18:19:15 UTC
  • Revision ID: james.westby@ubuntu.com-20101102181915-ivwy29820copccu2
Tags: upstream-1.2.2~svn2229
ImportĀ upstreamĀ versionĀ 1.2.2~svn2229

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
 
 
3
 
 
4
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
5
<html>
 
6
<head>
 
7
 <link rel="icon" type="image/vnd.microsoft.icon" href="http://www.gstatic.com/codesite/ph/images/phosting.ico">
 
8
 
 
9
 <script type="text/javascript">
 
10
 
 
11
 
 
12
 
 
13
 var codesite_token = null;
 
14
 
 
15
 
 
16
 var logged_in_user_email = null;
 
17
 
 
18
 
 
19
 var relative_base_url = "";
 
20
 
 
21
 </script>
 
22
 
 
23
 
 
24
 <title>pthread.h - 
 
25
 numexpr -
 
26
 
 
27
 Project Hosting on Google Code</title>
 
28
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
 
29
 
 
30
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/7642550995449508181/css/ph_core.css">
 
31
 
 
32
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/7642550995449508181/css/ph_detail.css" >
 
33
 
 
34
 
 
35
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/7642550995449508181/css/d_sb_20080522.css" >
 
36
 
 
37
 
 
38
 
 
39
<!--[if IE]>
 
40
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/7642550995449508181/css/d_ie.css" >
 
41
<![endif]-->
 
42
 <style type="text/css">
 
43
 .menuIcon.off { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -42px }
 
44
 .menuIcon.on { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -28px }
 
45
 .menuIcon.down { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 0; }
 
46
 </style>
 
47
</head>
 
48
<body class="t4">
 
49
 <script type="text/javascript">
 
50
 var _gaq = _gaq || [];
 
51
 _gaq.push(
 
52
 ['siteTracker._setAccount', 'UA-18071-1'],
 
53
 ['siteTracker._trackPageview']);
 
54
 
 
55
 (function() {
 
56
 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 
57
 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 
58
 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
 
59
 })();
 
60
 </script>
 
61
 <div id="gaia">
 
62
 
 
63
 <span>
 
64
 
 
65
 <a href="#" id="projects-dropdown" onclick="return false;"><u>My favorites</u> <small>&#9660;</small></a>
 
66
 | <a href="https://www.google.com/accounts/ServiceLogin?service=code&amp;ltmpl=phosting&amp;continue=http%3A%2F%2Fcode.google.com%2Fp%2Fnumexpr%2Fsource%2Fbrowse%2Ftrunk%2Fnumexpr%2Fwin32%2Fpthread.h&amp;followup=http%3A%2F%2Fcode.google.com%2Fp%2Fnumexpr%2Fsource%2Fbrowse%2Ftrunk%2Fnumexpr%2Fwin32%2Fpthread.h" onclick="_CS_click('/gb/ph/signin');"><u>Sign in</u></a>
 
67
 
 
68
 </span>
 
69
 
 
70
 </div>
 
71
 <div class="gbh" style="left: 0pt;"></div>
 
72
 <div class="gbh" style="right: 0pt;"></div>
 
73
 
 
74
 
 
75
 <div style="height: 1px"></div>
 
76
<!--[if IE 6]>
 
77
<div style="text-align:center;">
 
78
Support browsers that contribute to open source, try <a href="http://www.firefox.com">Firefox</a> or <a href="http://www.google.com/chrome">Google Chrome</a>.
 
79
</div>
 
80
<![endif]-->
 
81
 
 
82
 <div style="font-weight:bold; color:#a03; padding:5px; margin-top:10px; margin-bottom:-10px; text-align:center; background:#ffeac0;">
 
83
 Project Hosting will be READ-ONLY <a href='http://www.timeanddate.com/worldclock/fixedtime.html?month=8&day=10&year=2010&hour=7&min=0&sec=0&p1=224'>Tuesday at 7:00am PDT</a> due to brief network maintenance.
 
84
 
 
85
 </div>
 
86
 
 
87
 
 
88
 
 
89
 
 
90
 <table style="padding:0px; margin: 20px 0px 0px 0px; width:100%" cellpadding="0" cellspacing="0">
 
91
 <tr style="height: 58px;">
 
92
 
 
93
 <td style="width: 55px; text-align:center;">
 
94
 <a href="/p/numexpr/">
 
95
 
 
96
 <img src="http://www.gstatic.com/codesite/ph/images/defaultlogo.png" alt="Logo">
 
97
 
 
98
 </a>
 
99
 </td>
 
100
 
 
101
 <td style="padding-left: 0.5em">
 
102
 
 
103
 <div id="pname" style="margin: 0px 0px -3px 0px">
 
104
 <a href="/p/numexpr/" style="text-decoration:none; color:#000">numexpr</a>
 
105
 
 
106
 </div>
 
107
 <div id="psum">
 
108
 <i><a id="project_summary_link" href="/p/numexpr/" style="text-decoration:none; color:#000">Fast numerical array expression evaluator for Python and NumPy.</a></i>
 
109
 </div>
 
110
 
 
111
 </td>
 
112
 <td style="white-space:nowrap;text-align:right">
 
113
 
 
114
 <form action="/hosting/search">
 
115
 <input size="30" name="q" value="">
 
116
 <input type="submit" name="projectsearch" value="Search projects" >
 
117
 </form>
 
118
 
 
119
 </tr>
 
120
 </table>
 
121
 
 
122
 
 
123
 
 
124
<table id="mt" cellspacing="0" cellpadding="0" width="100%" border="0">
 
125
 <tr>
 
126
 <th onclick="if (!cancelBubble) _go('/p/numexpr/');">
 
127
 <div class="tab inactive">
 
128
 <div class="round4"></div>
 
129
 <div class="round2"></div>
 
130
 <div class="round1"></div>
 
131
 <div class="box-inner">
 
132
 <a onclick="cancelBubble=true;" href="/p/numexpr/">Project&nbsp;Home</a>
 
133
 </div>
 
134
 </div>
 
135
 </th><td>&nbsp;&nbsp;</td>
 
136
 
 
137
 
 
138
 
 
139
 
 
140
 <th onclick="if (!cancelBubble) _go('/p/numexpr/downloads/list');">
 
141
 <div class="tab inactive">
 
142
 <div class="round4"></div>
 
143
 <div class="round2"></div>
 
144
 <div class="round1"></div>
 
145
 <div class="box-inner">
 
146
 <a onclick="cancelBubble=true;" href="/p/numexpr/downloads/list">Downloads</a>
 
147
 </div>
 
148
 </div>
 
149
 </th><td>&nbsp;&nbsp;</td>
 
150
 
 
151
 
 
152
 
 
153
 
 
154
 
 
155
 <th onclick="if (!cancelBubble) _go('/p/numexpr/w/list');">
 
156
 <div class="tab inactive">
 
157
 <div class="round4"></div>
 
158
 <div class="round2"></div>
 
159
 <div class="round1"></div>
 
160
 <div class="box-inner">
 
161
 <a onclick="cancelBubble=true;" href="/p/numexpr/w/list">Wiki</a>
 
162
 </div>
 
163
 </div>
 
164
 </th><td>&nbsp;&nbsp;</td>
 
165
 
 
166
 
 
167
 
 
168
 
 
169
 
 
170
 <th onclick="if (!cancelBubble) _go('/p/numexpr/issues/list');">
 
171
 <div class="tab inactive">
 
172
 <div class="round4"></div>
 
173
 <div class="round2"></div>
 
174
 <div class="round1"></div>
 
175
 <div class="box-inner">
 
176
 <a onclick="cancelBubble=true;" href="/p/numexpr/issues/list">Issues</a>
 
177
 </div>
 
178
 </div>
 
179
 </th><td>&nbsp;&nbsp;</td>
 
180
 
 
181
 
 
182
 
 
183
 
 
184
 
 
185
 <th onclick="if (!cancelBubble) _go('/p/numexpr/source/checkout');">
 
186
 <div class="tab active">
 
187
 <div class="round4"></div>
 
188
 <div class="round2"></div>
 
189
 <div class="round1"></div>
 
190
 <div class="box-inner">
 
191
 <a onclick="cancelBubble=true;" href="/p/numexpr/source/checkout">Source</a>
 
192
 </div>
 
193
 </div>
 
194
 </th><td>&nbsp;&nbsp;</td>
 
195
 
 
196
 
 
197
 <td width="100%">&nbsp;</td>
 
198
 </tr>
 
199
</table>
 
200
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" class="st">
 
201
 <tr>
 
202
 
 
203
 
 
204
 
 
205
 
 
206
 
 
207
 
 
208
 <td>
 
209
 <div class="st2">
 
210
 <div class="isf">
 
211
 
 
212
 
 
213
 
 
214
 <span class="inst1"><a href="/p/numexpr/source/checkout">Checkout</a></span> |
 
215
 <span class="inst2"><a href="/p/numexpr/source/browse/">Browse</a></span> |
 
216
 <span class="inst3"><a href="/p/numexpr/source/list">Changes</a></span> |
 
217
 
 
218
 <form action="http://www.google.com/codesearch" method="get" style="display:inline"
 
219
 onsubmit="document.getElementById('codesearchq').value = document.getElementById('origq').value + ' package:http://numexpr\\.googlecode\\.com'">
 
220
 <input type="hidden" name="q" id="codesearchq" value="">
 
221
 <input maxlength="2048" size="38" id="origq" name="origq" value="" title="Google Code Search" style="font-size:92%">&nbsp;<input type="submit" value="Search Trunk" name="btnG" style="font-size:92%">
 
222
 
 
223
 
 
224
 
 
225
 </form>
 
226
 </div>
 
227
</div>
 
228
 
 
229
 </td>
 
230
 
 
231
 
 
232
 
 
233
 <td height="4" align="right" valign="top" class="bevel-right">
 
234
 <div class="round4"></div>
 
235
 <div class="round2"></div>
 
236
 <div class="round1"></div>
 
237
 </td>
 
238
 </tr>
 
239
</table>
 
240
<script type="text/javascript">
 
241
 var cancelBubble = false;
 
242
 function _go(url) { document.location = url; }
 
243
</script>
 
244
 
 
245
 
 
246
<div id="maincol"
 
247
 
 
248
>
 
249
 
 
250
 
 
251
<!-- IE -->
 
252
 
 
253
 
 
254
 
 
255
 
 
256
<div class="expand">
 
257
 
 
258
 
 
259
<style type="text/css">
 
260
 #file_flipper { display: inline; float: right; white-space: nowrap; }
 
261
 #file_flipper.hidden { display: none; }
 
262
 #file_flipper .pagelink { color: #0000CC; text-decoration: underline; }
 
263
 #file_flipper #visiblefiles { padding-left: 0.5em; padding-right: 0.5em; }
 
264
</style>
 
265
<div id="nav_and_rev" class="heading">
 
266
 <div class="round4"></div>
 
267
 <div class="round2"></div>
 
268
 <div class="round1"></div>
 
269
 <div class="box-inner" id="bub">
 
270
 <div class="bub-top">
 
271
 <div class="pagination" style="margin-left: 2em">
 
272
 <table cellpadding="0" cellspacing="0" class="flipper">
 
273
 <tbody>
 
274
 <tr>
 
275
 
 
276
 <td>
 
277
 <ul class="leftside">
 
278
 
 
279
 <li><a href="/p/numexpr/source/browse/branches/multithread/numexpr/win32/pthread.h?r=203" title="Previous">&lsaquo;r203</a></li>
 
280
 
 
281
 </ul>
 
282
 </td>
 
283
 
 
284
 <td><b>r234</b></td>
 
285
 
 
286
 </tr>
 
287
 </tbody>
 
288
 </table>
 
289
 </div>
 
290
 
 
291
 <div class="" style="vertical-align: top">
 
292
 <div class="src_crumbs src_nav">
 
293
 <strong class="src_nav">Source path:&nbsp;</strong>
 
294
 <span id="crumb_root">
 
295
 
 
296
 <a href="/p/numexpr/source/browse/">svn</a>/&nbsp;</span>
 
297
 <span id="crumb_links" class="ifClosed"><a href="/p/numexpr/source/browse/trunk/">trunk</a><span class="sp">/&nbsp;</span><a href="/p/numexpr/source/browse/trunk/numexpr/">numexpr</a><span class="sp">/&nbsp;</span><a href="/p/numexpr/source/browse/trunk/numexpr/win32/">win32</a><span class="sp">/&nbsp;</span>pthread.h</span>
 
298
 
 
299
 
 
300
 </div>
 
301
 
 
302
 </div>
 
303
 <div style="clear:both"></div>
 
304
 </div>
 
305
 </div>
 
306
</div>
 
307
 
 
308
<style type="text/css">
 
309
 
 
310
  tr.inline_comment {
 
311
 background: #fff;
 
312
 vertical-align: top;
 
313
 }
 
314
 div.draft, div.published {
 
315
 padding: .3em;
 
316
 border: 1px solid #999; 
 
317
 margin-bottom: .1em;
 
318
 font-family: arial, sans-serif;
 
319
 max-width: 60em;
 
320
 }
 
321
 div.draft {
 
322
 background: #ffa;
 
323
 } 
 
324
 div.published {
 
325
 background: #e5ecf9;
 
326
 }
 
327
 div.published .body, div.draft .body {
 
328
 padding: .5em .1em .1em .1em;
 
329
 max-width: 60em;
 
330
 white-space: pre-wrap;
 
331
 white-space: -moz-pre-wrap;
 
332
 white-space: -pre-wrap;
 
333
 white-space: -o-pre-wrap;
 
334
 word-wrap: break-word;
 
335
 }
 
336
 div.draft .actions {
 
337
 margin-left: 1em;
 
338
 font-size: 90%;
 
339
 }
 
340
 div.draft form {
 
341
 padding: .5em .5em .5em 0;
 
342
 }
 
343
 div.draft textarea, div.published textarea {
 
344
 width: 95%;
 
345
 height: 10em;
 
346
 font-family: arial, sans-serif;
 
347
 margin-bottom: .5em;
 
348
 }
 
349
 
 
350
 
 
351
 
 
352
 .nocursor, .nocursor td, .cursor_hidden, .cursor_hidden td {
 
353
 background-color: white;
 
354
 height: 2px;
 
355
 }
 
356
 .cursor, .cursor td {
 
357
 background-color: darkblue;
 
358
 height: 2px;
 
359
 display: '';
 
360
 }
 
361
 
 
362
</style>
 
363
<div class="fc">
 
364
 
 
365
 
 
366
 
 
367
<style type="text/css">
 
368
.undermouse span { 
 
369
 background-image: url(http://www.gstatic.com/codesite/ph/images/comments.gif); }
 
370
</style>
 
371
<table class="opened" id="review_comment_area" 
 
372
><tr>
 
373
<td id="nums">
 
374
<pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
 
375
 
 
376
<pre><table width="100%" id="nums_table_0"><tr id="gr_svn204_1"
 
377
 
 
378
><td id="1"><a href="#1">1</a></td></tr
 
379
><tr id="gr_svn204_2"
 
380
 
 
381
><td id="2"><a href="#2">2</a></td></tr
 
382
><tr id="gr_svn204_3"
 
383
 
 
384
><td id="3"><a href="#3">3</a></td></tr
 
385
><tr id="gr_svn204_4"
 
386
 
 
387
><td id="4"><a href="#4">4</a></td></tr
 
388
><tr id="gr_svn204_5"
 
389
 
 
390
><td id="5"><a href="#5">5</a></td></tr
 
391
><tr id="gr_svn204_6"
 
392
 
 
393
><td id="6"><a href="#6">6</a></td></tr
 
394
><tr id="gr_svn204_7"
 
395
 
 
396
><td id="7"><a href="#7">7</a></td></tr
 
397
><tr id="gr_svn204_8"
 
398
 
 
399
><td id="8"><a href="#8">8</a></td></tr
 
400
><tr id="gr_svn204_9"
 
401
 
 
402
><td id="9"><a href="#9">9</a></td></tr
 
403
><tr id="gr_svn204_10"
 
404
 
 
405
><td id="10"><a href="#10">10</a></td></tr
 
406
><tr id="gr_svn204_11"
 
407
 
 
408
><td id="11"><a href="#11">11</a></td></tr
 
409
><tr id="gr_svn204_12"
 
410
 
 
411
><td id="12"><a href="#12">12</a></td></tr
 
412
><tr id="gr_svn204_13"
 
413
 
 
414
><td id="13"><a href="#13">13</a></td></tr
 
415
><tr id="gr_svn204_14"
 
416
 
 
417
><td id="14"><a href="#14">14</a></td></tr
 
418
><tr id="gr_svn204_15"
 
419
 
 
420
><td id="15"><a href="#15">15</a></td></tr
 
421
><tr id="gr_svn204_16"
 
422
 
 
423
><td id="16"><a href="#16">16</a></td></tr
 
424
><tr id="gr_svn204_17"
 
425
 
 
426
><td id="17"><a href="#17">17</a></td></tr
 
427
><tr id="gr_svn204_18"
 
428
 
 
429
><td id="18"><a href="#18">18</a></td></tr
 
430
><tr id="gr_svn204_19"
 
431
 
 
432
><td id="19"><a href="#19">19</a></td></tr
 
433
><tr id="gr_svn204_20"
 
434
 
 
435
><td id="20"><a href="#20">20</a></td></tr
 
436
><tr id="gr_svn204_21"
 
437
 
 
438
><td id="21"><a href="#21">21</a></td></tr
 
439
><tr id="gr_svn204_22"
 
440
 
 
441
><td id="22"><a href="#22">22</a></td></tr
 
442
><tr id="gr_svn204_23"
 
443
 
 
444
><td id="23"><a href="#23">23</a></td></tr
 
445
><tr id="gr_svn204_24"
 
446
 
 
447
><td id="24"><a href="#24">24</a></td></tr
 
448
><tr id="gr_svn204_25"
 
449
 
 
450
><td id="25"><a href="#25">25</a></td></tr
 
451
><tr id="gr_svn204_26"
 
452
 
 
453
><td id="26"><a href="#26">26</a></td></tr
 
454
><tr id="gr_svn204_27"
 
455
 
 
456
><td id="27"><a href="#27">27</a></td></tr
 
457
><tr id="gr_svn204_28"
 
458
 
 
459
><td id="28"><a href="#28">28</a></td></tr
 
460
><tr id="gr_svn204_29"
 
461
 
 
462
><td id="29"><a href="#29">29</a></td></tr
 
463
><tr id="gr_svn204_30"
 
464
 
 
465
><td id="30"><a href="#30">30</a></td></tr
 
466
><tr id="gr_svn204_31"
 
467
 
 
468
><td id="31"><a href="#31">31</a></td></tr
 
469
><tr id="gr_svn204_32"
 
470
 
 
471
><td id="32"><a href="#32">32</a></td></tr
 
472
><tr id="gr_svn204_33"
 
473
 
 
474
><td id="33"><a href="#33">33</a></td></tr
 
475
><tr id="gr_svn204_34"
 
476
 
 
477
><td id="34"><a href="#34">34</a></td></tr
 
478
><tr id="gr_svn204_35"
 
479
 
 
480
><td id="35"><a href="#35">35</a></td></tr
 
481
><tr id="gr_svn204_36"
 
482
 
 
483
><td id="36"><a href="#36">36</a></td></tr
 
484
><tr id="gr_svn204_37"
 
485
 
 
486
><td id="37"><a href="#37">37</a></td></tr
 
487
><tr id="gr_svn204_38"
 
488
 
 
489
><td id="38"><a href="#38">38</a></td></tr
 
490
><tr id="gr_svn204_39"
 
491
 
 
492
><td id="39"><a href="#39">39</a></td></tr
 
493
><tr id="gr_svn204_40"
 
494
 
 
495
><td id="40"><a href="#40">40</a></td></tr
 
496
><tr id="gr_svn204_41"
 
497
 
 
498
><td id="41"><a href="#41">41</a></td></tr
 
499
><tr id="gr_svn204_42"
 
500
 
 
501
><td id="42"><a href="#42">42</a></td></tr
 
502
><tr id="gr_svn204_43"
 
503
 
 
504
><td id="43"><a href="#43">43</a></td></tr
 
505
><tr id="gr_svn204_44"
 
506
 
 
507
><td id="44"><a href="#44">44</a></td></tr
 
508
><tr id="gr_svn204_45"
 
509
 
 
510
><td id="45"><a href="#45">45</a></td></tr
 
511
><tr id="gr_svn204_46"
 
512
 
 
513
><td id="46"><a href="#46">46</a></td></tr
 
514
><tr id="gr_svn204_47"
 
515
 
 
516
><td id="47"><a href="#47">47</a></td></tr
 
517
><tr id="gr_svn204_48"
 
518
 
 
519
><td id="48"><a href="#48">48</a></td></tr
 
520
><tr id="gr_svn204_49"
 
521
 
 
522
><td id="49"><a href="#49">49</a></td></tr
 
523
><tr id="gr_svn204_50"
 
524
 
 
525
><td id="50"><a href="#50">50</a></td></tr
 
526
><tr id="gr_svn204_51"
 
527
 
 
528
><td id="51"><a href="#51">51</a></td></tr
 
529
><tr id="gr_svn204_52"
 
530
 
 
531
><td id="52"><a href="#52">52</a></td></tr
 
532
><tr id="gr_svn204_53"
 
533
 
 
534
><td id="53"><a href="#53">53</a></td></tr
 
535
><tr id="gr_svn204_54"
 
536
 
 
537
><td id="54"><a href="#54">54</a></td></tr
 
538
><tr id="gr_svn204_55"
 
539
 
 
540
><td id="55"><a href="#55">55</a></td></tr
 
541
><tr id="gr_svn204_56"
 
542
 
 
543
><td id="56"><a href="#56">56</a></td></tr
 
544
><tr id="gr_svn204_57"
 
545
 
 
546
><td id="57"><a href="#57">57</a></td></tr
 
547
><tr id="gr_svn204_58"
 
548
 
 
549
><td id="58"><a href="#58">58</a></td></tr
 
550
><tr id="gr_svn204_59"
 
551
 
 
552
><td id="59"><a href="#59">59</a></td></tr
 
553
><tr id="gr_svn204_60"
 
554
 
 
555
><td id="60"><a href="#60">60</a></td></tr
 
556
><tr id="gr_svn204_61"
 
557
 
 
558
><td id="61"><a href="#61">61</a></td></tr
 
559
><tr id="gr_svn204_62"
 
560
 
 
561
><td id="62"><a href="#62">62</a></td></tr
 
562
><tr id="gr_svn204_63"
 
563
 
 
564
><td id="63"><a href="#63">63</a></td></tr
 
565
><tr id="gr_svn204_64"
 
566
 
 
567
><td id="64"><a href="#64">64</a></td></tr
 
568
><tr id="gr_svn204_65"
 
569
 
 
570
><td id="65"><a href="#65">65</a></td></tr
 
571
><tr id="gr_svn204_66"
 
572
 
 
573
><td id="66"><a href="#66">66</a></td></tr
 
574
><tr id="gr_svn204_67"
 
575
 
 
576
><td id="67"><a href="#67">67</a></td></tr
 
577
><tr id="gr_svn204_68"
 
578
 
 
579
><td id="68"><a href="#68">68</a></td></tr
 
580
></table></pre>
 
581
 
 
582
<pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
 
583
</td>
 
584
<td id="lines">
 
585
<pre class="prettyprint"><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
 
586
 
 
587
<pre class="prettyprint "><table id="src_table_0"><tr
 
588
id=sl_svn204_1
 
589
 
 
590
><td class="source">/*<br></td></tr
 
591
><tr
 
592
id=sl_svn204_2
 
593
 
 
594
><td class="source"> * Header used to adapt pthread-based POSIX code to Windows API threads.<br></td></tr
 
595
><tr
 
596
id=sl_svn204_3
 
597
 
 
598
><td class="source"> *<br></td></tr
 
599
><tr
 
600
id=sl_svn204_4
 
601
 
 
602
><td class="source"> * Copyright (C) 2009 Andrzej K. Haczewski &lt;ahaczewski@gmail.com&gt;<br></td></tr
 
603
><tr
 
604
id=sl_svn204_5
 
605
 
 
606
><td class="source"> */<br></td></tr
 
607
><tr
 
608
id=sl_svn204_6
 
609
 
 
610
><td class="source"><br></td></tr
 
611
><tr
 
612
id=sl_svn204_7
 
613
 
 
614
><td class="source">#ifndef PTHREAD_H<br></td></tr
 
615
><tr
 
616
id=sl_svn204_8
 
617
 
 
618
><td class="source">#define PTHREAD_H<br></td></tr
 
619
><tr
 
620
id=sl_svn204_9
 
621
 
 
622
><td class="source"><br></td></tr
 
623
><tr
 
624
id=sl_svn204_10
 
625
 
 
626
><td class="source">#ifndef WIN32_LEAN_AND_MEAN<br></td></tr
 
627
><tr
 
628
id=sl_svn204_11
 
629
 
 
630
><td class="source">#define WIN32_LEAN_AND_MEAN<br></td></tr
 
631
><tr
 
632
id=sl_svn204_12
 
633
 
 
634
><td class="source">#endif<br></td></tr
 
635
><tr
 
636
id=sl_svn204_13
 
637
 
 
638
><td class="source"><br></td></tr
 
639
><tr
 
640
id=sl_svn204_14
 
641
 
 
642
><td class="source">#include &lt;windows.h&gt;<br></td></tr
 
643
><tr
 
644
id=sl_svn204_15
 
645
 
 
646
><td class="source"><br></td></tr
 
647
><tr
 
648
id=sl_svn204_16
 
649
 
 
650
><td class="source">/*<br></td></tr
 
651
><tr
 
652
id=sl_svn204_17
 
653
 
 
654
><td class="source"> * Defines that adapt Windows API threads to pthreads API<br></td></tr
 
655
><tr
 
656
id=sl_svn204_18
 
657
 
 
658
><td class="source"> */<br></td></tr
 
659
><tr
 
660
id=sl_svn204_19
 
661
 
 
662
><td class="source">#define pthread_mutex_t CRITICAL_SECTION<br></td></tr
 
663
><tr
 
664
id=sl_svn204_20
 
665
 
 
666
><td class="source"><br></td></tr
 
667
><tr
 
668
id=sl_svn204_21
 
669
 
 
670
><td class="source">#define pthread_mutex_init(a,b) InitializeCriticalSection((a))<br></td></tr
 
671
><tr
 
672
id=sl_svn204_22
 
673
 
 
674
><td class="source">#define pthread_mutex_destroy(a) DeleteCriticalSection((a))<br></td></tr
 
675
><tr
 
676
id=sl_svn204_23
 
677
 
 
678
><td class="source">#define pthread_mutex_lock EnterCriticalSection<br></td></tr
 
679
><tr
 
680
id=sl_svn204_24
 
681
 
 
682
><td class="source">#define pthread_mutex_unlock LeaveCriticalSection<br></td></tr
 
683
><tr
 
684
id=sl_svn204_25
 
685
 
 
686
><td class="source"><br></td></tr
 
687
><tr
 
688
id=sl_svn204_26
 
689
 
 
690
><td class="source">/*<br></td></tr
 
691
><tr
 
692
id=sl_svn204_27
 
693
 
 
694
><td class="source"> * Implement simple condition variable for Windows threads, based on ACE<br></td></tr
 
695
><tr
 
696
id=sl_svn204_28
 
697
 
 
698
><td class="source"> * implementation.<br></td></tr
 
699
><tr
 
700
id=sl_svn204_29
 
701
 
 
702
><td class="source"> *<br></td></tr
 
703
><tr
 
704
id=sl_svn204_30
 
705
 
 
706
><td class="source"> * See original implementation: http://bit.ly/1vkDjo<br></td></tr
 
707
><tr
 
708
id=sl_svn204_31
 
709
 
 
710
><td class="source"> * ACE homepage: http://www.cse.wustl.edu/~schmidt/ACE.html<br></td></tr
 
711
><tr
 
712
id=sl_svn204_32
 
713
 
 
714
><td class="source"> * See also: http://www.cse.wustl.edu/~schmidt/win32-cv-1.html<br></td></tr
 
715
><tr
 
716
id=sl_svn204_33
 
717
 
 
718
><td class="source"> */<br></td></tr
 
719
><tr
 
720
id=sl_svn204_34
 
721
 
 
722
><td class="source">typedef struct {<br></td></tr
 
723
><tr
 
724
id=sl_svn204_35
 
725
 
 
726
><td class="source">    LONG waiters;<br></td></tr
 
727
><tr
 
728
id=sl_svn204_36
 
729
 
 
730
><td class="source">    int was_broadcast;<br></td></tr
 
731
><tr
 
732
id=sl_svn204_37
 
733
 
 
734
><td class="source">    CRITICAL_SECTION waiters_lock;<br></td></tr
 
735
><tr
 
736
id=sl_svn204_38
 
737
 
 
738
><td class="source">    HANDLE sema;<br></td></tr
 
739
><tr
 
740
id=sl_svn204_39
 
741
 
 
742
><td class="source">    HANDLE continue_broadcast;<br></td></tr
 
743
><tr
 
744
id=sl_svn204_40
 
745
 
 
746
><td class="source">} pthread_cond_t;<br></td></tr
 
747
><tr
 
748
id=sl_svn204_41
 
749
 
 
750
><td class="source"><br></td></tr
 
751
><tr
 
752
id=sl_svn204_42
 
753
 
 
754
><td class="source">extern int pthread_cond_init(pthread_cond_t *cond, const void *unused);<br></td></tr
 
755
><tr
 
756
id=sl_svn204_43
 
757
 
 
758
><td class="source">extern int pthread_cond_destroy(pthread_cond_t *cond);<br></td></tr
 
759
><tr
 
760
id=sl_svn204_44
 
761
 
 
762
><td class="source">extern int pthread_cond_wait(pthread_cond_t *cond, CRITICAL_SECTION *mutex);<br></td></tr
 
763
><tr
 
764
id=sl_svn204_45
 
765
 
 
766
><td class="source">extern int pthread_cond_signal(pthread_cond_t *cond);<br></td></tr
 
767
><tr
 
768
id=sl_svn204_46
 
769
 
 
770
><td class="source">extern int pthread_cond_broadcast(pthread_cond_t *cond);<br></td></tr
 
771
><tr
 
772
id=sl_svn204_47
 
773
 
 
774
><td class="source"><br></td></tr
 
775
><tr
 
776
id=sl_svn204_48
 
777
 
 
778
><td class="source">/*<br></td></tr
 
779
><tr
 
780
id=sl_svn204_49
 
781
 
 
782
><td class="source"> * Simple thread creation implementation using pthread API<br></td></tr
 
783
><tr
 
784
id=sl_svn204_50
 
785
 
 
786
><td class="source"> */<br></td></tr
 
787
><tr
 
788
id=sl_svn204_51
 
789
 
 
790
><td class="source">typedef struct {<br></td></tr
 
791
><tr
 
792
id=sl_svn204_52
 
793
 
 
794
><td class="source">    HANDLE handle;<br></td></tr
 
795
><tr
 
796
id=sl_svn204_53
 
797
 
 
798
><td class="source">    void *(*start_routine)(void*);<br></td></tr
 
799
><tr
 
800
id=sl_svn204_54
 
801
 
 
802
><td class="source">    void *arg;<br></td></tr
 
803
><tr
 
804
id=sl_svn204_55
 
805
 
 
806
><td class="source">} pthread_t;<br></td></tr
 
807
><tr
 
808
id=sl_svn204_56
 
809
 
 
810
><td class="source"><br></td></tr
 
811
><tr
 
812
id=sl_svn204_57
 
813
 
 
814
><td class="source">extern int pthread_create(pthread_t *thread, const void *unused,<br></td></tr
 
815
><tr
 
816
id=sl_svn204_58
 
817
 
 
818
><td class="source">                      void *(*start_routine)(void*), void *arg);<br></td></tr
 
819
><tr
 
820
id=sl_svn204_59
 
821
 
 
822
><td class="source"><br></td></tr
 
823
><tr
 
824
id=sl_svn204_60
 
825
 
 
826
><td class="source">/*<br></td></tr
 
827
><tr
 
828
id=sl_svn204_61
 
829
 
 
830
><td class="source"> * To avoid the need of copying a struct, we use small macro wrapper to pass<br></td></tr
 
831
><tr
 
832
id=sl_svn204_62
 
833
 
 
834
><td class="source"> * pointer to win32_pthread_join instead.<br></td></tr
 
835
><tr
 
836
id=sl_svn204_63
 
837
 
 
838
><td class="source"> */<br></td></tr
 
839
><tr
 
840
id=sl_svn204_64
 
841
 
 
842
><td class="source">#define pthread_join(a, b) win32_pthread_join(&amp;(a), (b))<br></td></tr
 
843
><tr
 
844
id=sl_svn204_65
 
845
 
 
846
><td class="source"><br></td></tr
 
847
><tr
 
848
id=sl_svn204_66
 
849
 
 
850
><td class="source">extern int win32_pthread_join(pthread_t *thread, void **value_ptr);<br></td></tr
 
851
><tr
 
852
id=sl_svn204_67
 
853
 
 
854
><td class="source"><br></td></tr
 
855
><tr
 
856
id=sl_svn204_68
 
857
 
 
858
><td class="source">#endif /* PTHREAD_H */<br></td></tr
 
859
></table></pre>
 
860
 
 
861
<pre class="prettyprint"><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
 
862
</td>
 
863
</tr></table>
 
864
<script type="text/javascript">
 
865
 var lineNumUnderMouse = -1;
 
866
 
 
867
 function gutterOver(num) {
 
868
 gutterOut();
 
869
 var newTR = document.getElementById('gr_svn204_' + num);
 
870
 if (newTR) {
 
871
 newTR.className = 'undermouse';
 
872
 }
 
873
 lineNumUnderMouse = num;
 
874
 }
 
875
 function gutterOut() {
 
876
 if (lineNumUnderMouse != -1) {
 
877
 var oldTR = document.getElementById(
 
878
 'gr_svn204_' + lineNumUnderMouse);
 
879
 if (oldTR) {
 
880
 oldTR.className = '';
 
881
 }
 
882
 lineNumUnderMouse = -1;
 
883
 }
 
884
 }
 
885
 var numsGenState = {table_base_id: 'nums_table_'};
 
886
 var srcGenState = {table_base_id: 'src_table_'};
 
887
 var alignerRunning = false;
 
888
 var startOver = false;
 
889
 function setLineNumberHeights() {
 
890
 if (alignerRunning) {
 
891
 startOver = true;
 
892
 return;
 
893
 }
 
894
 numsGenState.chunk_id = 0;
 
895
 numsGenState.table = document.getElementById('nums_table_0');
 
896
 numsGenState.row_num = 0;
 
897
 srcGenState.chunk_id = 0;
 
898
 srcGenState.table = document.getElementById('src_table_0');
 
899
 srcGenState.row_num = 0;
 
900
 alignerRunning = true;
 
901
 continueToSetLineNumberHeights();
 
902
 }
 
903
 function rowGenerator(genState) {
 
904
 if (genState.row_num < genState.table.rows.length) {
 
905
 var currentRow = genState.table.rows[genState.row_num];
 
906
 genState.row_num++;
 
907
 return currentRow;
 
908
 }
 
909
 var newTable = document.getElementById(
 
910
 genState.table_base_id + (genState.chunk_id + 1));
 
911
 if (newTable) {
 
912
 genState.chunk_id++;
 
913
 genState.row_num = 0;
 
914
 genState.table = newTable;
 
915
 return genState.table.rows[0];
 
916
 }
 
917
 return null;
 
918
 }
 
919
 var MAX_ROWS_PER_PASS = 1000;
 
920
 function continueToSetLineNumberHeights() {
 
921
 var rowsInThisPass = 0;
 
922
 var numRow = 1;
 
923
 var srcRow = 1;
 
924
 while (numRow && srcRow && rowsInThisPass < MAX_ROWS_PER_PASS) {
 
925
 numRow = rowGenerator(numsGenState);
 
926
 srcRow = rowGenerator(srcGenState);
 
927
 rowsInThisPass++;
 
928
 if (numRow && srcRow) {
 
929
 if (numRow.offsetHeight != srcRow.offsetHeight) {
 
930
 numRow.firstChild.style.height = srcRow.offsetHeight + 'px';
 
931
 }
 
932
 }
 
933
 }
 
934
 if (rowsInThisPass >= MAX_ROWS_PER_PASS) {
 
935
 setTimeout(continueToSetLineNumberHeights, 10);
 
936
 } else {
 
937
 alignerRunning = false;
 
938
 if (startOver) {
 
939
 startOver = false;
 
940
 setTimeout(setLineNumberHeights, 500);
 
941
 }
 
942
 }
 
943
 }
 
944
 // Do 2 complete passes, because there can be races
 
945
 // between this code and prettify.
 
946
 startOver = true;
 
947
 setTimeout(setLineNumberHeights, 250);
 
948
 window.onresize = setLineNumberHeights;
 
949
</script>
 
950
 
 
951
 
 
952
 
 
953
 <div id="log">
 
954
 <div style="text-align:right">
 
955
 <a class="ifCollapse" href="#" onclick="_toggleMeta('', 'p', 'numexpr', this)">Show details</a>
 
956
 <a class="ifExpand" href="#" onclick="_toggleMeta('', 'p', 'numexpr', this)">Hide details</a>
 
957
 </div>
 
958
 <div class="ifExpand">
 
959
 
 
960
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 
961
 <div class="round4"></div>
 
962
 <div class="round2"></div>
 
963
 <div class="round1"></div>
 
964
 <div class="box-inner">
 
965
 <div id="changelog">
 
966
 <p>Change log</p>
 
967
 <div>
 
968
 <a href="/p/numexpr/source/detail?spec=svn234&r=204">r204</a>
 
969
 by faltet
 
970
 on Jul 30 (5 days ago)
 
971
 &nbsp; <a href="/p/numexpr/source/diff?spec=svn234&r=204&amp;format=side&amp;path=/trunk/numexpr/win32/pthread.h&amp;old_path=/branches/multithread/numexpr/win32/pthread.h&amp;old=194">Diff</a>
 
972
 </div>
 
973
 <pre>Merged branch multithreaded into trunk.</pre>
 
974
 </div>
 
975
 
 
976
 
 
977
 
 
978
 
 
979
 
 
980
 
 
981
 <script type="text/javascript">
 
982
 var detail_url = '/p/numexpr/source/detail?r=204&spec=svn234';
 
983
 var publish_url = '/p/numexpr/source/detail?r=204&spec=svn234#publish';
 
984
 // describe the paths of this revision in javascript.
 
985
 var changed_paths = [];
 
986
 var changed_urls = [];
 
987
 
 
988
 changed_paths.push('/trunk');
 
989
 changed_urls.push('/p/numexpr/source/browse/trunk?r=204&spec=svn234');
 
990
 
 
991
 
 
992
 changed_paths.push('/trunk/README.txt');
 
993
 changed_urls.push('/p/numexpr/source/browse/trunk/README.txt?r=204&spec=svn234');
 
994
 
 
995
 
 
996
 changed_paths.push('/trunk/RELEASE_NOTES.txt');
 
997
 changed_urls.push('/p/numexpr/source/browse/trunk/RELEASE_NOTES.txt?r=204&spec=svn234');
 
998
 
 
999
 
 
1000
 changed_paths.push('/trunk/bench/poly.c');
 
1001
 changed_urls.push('/p/numexpr/source/browse/trunk/bench/poly.c?r=204&spec=svn234');
 
1002
 
 
1003
 
 
1004
 changed_paths.push('/trunk/bench/poly.py');
 
1005
 changed_urls.push('/p/numexpr/source/browse/trunk/bench/poly.py?r=204&spec=svn234');
 
1006
 
 
1007
 
 
1008
 changed_paths.push('/trunk/bench/unaligned-simple.py');
 
1009
 changed_urls.push('/p/numexpr/source/browse/trunk/bench/unaligned-simple.py?r=204&spec=svn234');
 
1010
 
 
1011
 
 
1012
 changed_paths.push('/trunk/numexpr/__init__.py');
 
1013
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/__init__.py?r=204&spec=svn234');
 
1014
 
 
1015
 
 
1016
 changed_paths.push('/trunk/numexpr/interp_body.c');
 
1017
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/interp_body.c?r=204&spec=svn234');
 
1018
 
 
1019
 
 
1020
 changed_paths.push('/trunk/numexpr/interpreter.c');
 
1021
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/interpreter.c?r=204&spec=svn234');
 
1022
 
 
1023
 
 
1024
 changed_paths.push('/trunk/numexpr/tests/test_numexpr.py');
 
1025
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/tests/test_numexpr.py?r=204&spec=svn234');
 
1026
 
 
1027
 
 
1028
 changed_paths.push('/trunk/numexpr/utils.py');
 
1029
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/utils.py?r=204&spec=svn234');
 
1030
 
 
1031
 
 
1032
 changed_paths.push('/trunk/numexpr/win32');
 
1033
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/win32?r=204&spec=svn234');
 
1034
 
 
1035
 
 
1036
 changed_paths.push('/trunk/numexpr/win32/pthread.c');
 
1037
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/win32/pthread.c?r=204&spec=svn234');
 
1038
 
 
1039
 
 
1040
 changed_paths.push('/trunk/numexpr/win32/pthread.h');
 
1041
 changed_urls.push('/p/numexpr/source/browse/trunk/numexpr/win32/pthread.h?r=204&spec=svn234');
 
1042
 
 
1043
 var selected_path = '/trunk/numexpr/win32/pthread.h';
 
1044
 
 
1045
 
 
1046
 changed_paths.push('/trunk/setup.py');
 
1047
 changed_urls.push('/p/numexpr/source/browse/trunk/setup.py?r=204&spec=svn234');
 
1048
 
 
1049
 
 
1050
 function getCurrentPageIndex() {
 
1051
 for (var i = 0; i < changed_paths.length; i++) {
 
1052
 if (selected_path == changed_paths[i]) {
 
1053
 return i;
 
1054
 }
 
1055
 }
 
1056
 }
 
1057
 function getNextPage() {
 
1058
 var i = getCurrentPageIndex();
 
1059
 if (i < changed_paths.length - 1) {
 
1060
 return changed_urls[i + 1];
 
1061
 }
 
1062
 return null;
 
1063
 }
 
1064
 function getPreviousPage() {
 
1065
 var i = getCurrentPageIndex();
 
1066
 if (i > 0) {
 
1067
 return changed_urls[i - 1];
 
1068
 }
 
1069
 return null;
 
1070
 }
 
1071
 function gotoNextPage() {
 
1072
 var page = getNextPage();
 
1073
 if (!page) {
 
1074
 page = detail_url;
 
1075
 }
 
1076
 window.location = page;
 
1077
 }
 
1078
 function gotoPreviousPage() {
 
1079
 var page = getPreviousPage();
 
1080
 if (!page) {
 
1081
 page = detail_url;
 
1082
 }
 
1083
 window.location = page;
 
1084
 }
 
1085
 function gotoDetailPage() {
 
1086
 window.location = detail_url;
 
1087
 }
 
1088
 function gotoPublishPage() {
 
1089
 window.location = publish_url;
 
1090
 }
 
1091
</script>
 
1092
 
 
1093
 <style type="text/css">
 
1094
 #review_nav {
 
1095
 border-top: 3px solid white;
 
1096
 padding-top: 6px;
 
1097
 margin-top: 1em;
 
1098
 }
 
1099
 #review_nav td {
 
1100
 vertical-align: middle;
 
1101
 }
 
1102
 #review_nav select {
 
1103
 margin: .5em 0;
 
1104
 }
 
1105
 </style>
 
1106
 <div id="review_nav">
 
1107
 <table><tr><td>Go to:&nbsp;</td><td>
 
1108
 <select name="files_in_rev" onchange="window.location=this.value">
 
1109
 
 
1110
 <option value="/p/numexpr/source/browse/trunk?r=204&amp;spec=svn234"
 
1111
 
 
1112
 >/trunk</option>
 
1113
 
 
1114
 <option value="/p/numexpr/source/browse/trunk/README.txt?r=204&amp;spec=svn234"
 
1115
 
 
1116
 >/trunk/README.txt</option>
 
1117
 
 
1118
 <option value="/p/numexpr/source/browse/trunk/RELEASE_NOTES.txt?r=204&amp;spec=svn234"
 
1119
 
 
1120
 >/trunk/RELEASE_NOTES.txt</option>
 
1121
 
 
1122
 <option value="/p/numexpr/source/browse/trunk/bench/poly.c?r=204&amp;spec=svn234"
 
1123
 
 
1124
 >/trunk/bench/poly.c</option>
 
1125
 
 
1126
 <option value="/p/numexpr/source/browse/trunk/bench/poly.py?r=204&amp;spec=svn234"
 
1127
 
 
1128
 >/trunk/bench/poly.py</option>
 
1129
 
 
1130
 <option value="/p/numexpr/source/browse/trunk/bench/unaligned-simple.py?r=204&amp;spec=svn234"
 
1131
 
 
1132
 >/trunk/bench/unaligned-simple.py</option>
 
1133
 
 
1134
 <option value="/p/numexpr/source/browse/trunk/numexpr/__init__.py?r=204&amp;spec=svn234"
 
1135
 
 
1136
 >/trunk/numexpr/__init__.py</option>
 
1137
 
 
1138
 <option value="/p/numexpr/source/browse/trunk/numexpr/interp_body.c?r=204&amp;spec=svn234"
 
1139
 
 
1140
 >/trunk/numexpr/interp_body.c</option>
 
1141
 
 
1142
 <option value="/p/numexpr/source/browse/trunk/numexpr/interpreter.c?r=204&amp;spec=svn234"
 
1143
 
 
1144
 >/trunk/numexpr/interpreter.c</option>
 
1145
 
 
1146
 <option value="/p/numexpr/source/browse/trunk/numexpr/tests/test_numexpr.py?r=204&amp;spec=svn234"
 
1147
 
 
1148
 >...nk/numexpr/tests/test_numexpr.py</option>
 
1149
 
 
1150
 <option value="/p/numexpr/source/browse/trunk/numexpr/utils.py?r=204&amp;spec=svn234"
 
1151
 
 
1152
 >/trunk/numexpr/utils.py</option>
 
1153
 
 
1154
 <option value="/p/numexpr/source/browse/trunk/numexpr/win32?r=204&amp;spec=svn234"
 
1155
 
 
1156
 >/trunk/numexpr/win32</option>
 
1157
 
 
1158
 <option value="/p/numexpr/source/browse/trunk/numexpr/win32/pthread.c?r=204&amp;spec=svn234"
 
1159
 
 
1160
 >/trunk/numexpr/win32/pthread.c</option>
 
1161
 
 
1162
 <option value="/p/numexpr/source/browse/trunk/numexpr/win32/pthread.h?r=204&amp;spec=svn234"
 
1163
 selected="selected"
 
1164
 >/trunk/numexpr/win32/pthread.h</option>
 
1165
 
 
1166
 <option value="/p/numexpr/source/browse/trunk/setup.py?r=204&amp;spec=svn234"
 
1167
 
 
1168
 >/trunk/setup.py</option>
 
1169
 
 
1170
 </select>
 
1171
 </td></tr></table>
 
1172
 
 
1173
 
 
1174
 
 
1175
 
 
1176
 
 
1177
 
 
1178
 <div style="white-space:nowrap">
 
1179
 
 
1180
 <a href="https://www.google.com/accounts/ServiceLogin?service=code&amp;ltmpl=phosting&amp;continue=http%3A%2F%2Fcode.google.com%2Fp%2Fnumexpr%2Fsource%2Fbrowse%2Ftrunk%2Fnumexpr%2Fwin32%2Fpthread.h&amp;followup=http%3A%2F%2Fcode.google.com%2Fp%2Fnumexpr%2Fsource%2Fbrowse%2Ftrunk%2Fnumexpr%2Fwin32%2Fpthread.h"
 
1181
 >Sign in</a> to write a code review</div>
 
1182
 
 
1183
 
 
1184
 
 
1185
 </div>
 
1186
 
 
1187
 
 
1188
 </div>
 
1189
 <div class="round1"></div>
 
1190
 <div class="round2"></div>
 
1191
 <div class="round4"></div>
 
1192
 </div>
 
1193
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 
1194
 <div class="round4"></div>
 
1195
 <div class="round2"></div>
 
1196
 <div class="round1"></div>
 
1197
 <div class="box-inner">
 
1198
 <div id="older_bubble">
 
1199
 <p>Older revisions</p>
 
1200
 
 
1201
 
 
1202
 <div class="closed" style="margin-bottom:3px;" >
 
1203
 <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
 
1204
 <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
 
1205
 <a href="/p/numexpr/source/detail?spec=svn234&r=194">r194</a>
 
1206
 by faltet
 
1207
 on Jul 29 (6 days ago)
 
1208
 &nbsp; <a href="/p/numexpr/source/diff?spec=svn234&r=194&amp;format=side&amp;path=/branches/multithread/numexpr/win32/pthread.h&amp;old_path=/branches/multithread/numexpr/win32/pthread.h&amp;old=0">Diff</a>
 
1209
 <br>
 
1210
 <pre class="ifOpened">Attempt to avoid the use of the
 
1211
pthreads library on Win32.  Using the
 
1212
pthreads API emulation for Win that
 
1213
uses Git.</pre>
 
1214
 </div>
 
1215
 
 
1216
 
 
1217
 <a href="/p/numexpr/source/list?path=/trunk/numexpr/win32/pthread.h&start=204">All revisions of this file</a>
 
1218
 </div>
 
1219
 </div>
 
1220
 <div class="round1"></div>
 
1221
 <div class="round2"></div>
 
1222
 <div class="round4"></div>
 
1223
 </div>
 
1224
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 
1225
 <div class="round4"></div>
 
1226
 <div class="round2"></div>
 
1227
 <div class="round1"></div>
 
1228
 <div class="box-inner">
 
1229
 <div id="fileinfo_bubble">
 
1230
 <p>File info</p>
 
1231
 
 
1232
 <div>Size: 1888 bytes,
 
1233
 68 lines</div>
 
1234
 
 
1235
 <div><a href="http://numexpr.googlecode.com/svn/trunk/numexpr/win32/pthread.h">View raw file</a></div>
 
1236
 </div>
 
1237
 
 
1238
 </div>
 
1239
 <div class="round1"></div>
 
1240
 <div class="round2"></div>
 
1241
 <div class="round4"></div>
 
1242
 </div>
 
1243
 </div>
 
1244
 </div>
 
1245
 
 
1246
 
 
1247
</div>
 
1248
</div>
 
1249
 
 
1250
 <script src="http://www.gstatic.com/codesite/ph/7642550995449508181/js/prettify/prettify.js"></script>
 
1251
 
 
1252
<script type="text/javascript">prettyPrint();</script>
 
1253
 
 
1254
<script src="http://www.gstatic.com/codesite/ph/7642550995449508181/js/source_file_scripts.js"></script>
 
1255
 
 
1256
 <script type="text/javascript" src="http://kibbles.googlecode.com/files/kibbles-1.3.1.comp.js"></script>
 
1257
 <script type="text/javascript">
 
1258
 var lastStop = null;
 
1259
 var initilized = false;
 
1260
 
 
1261
 function updateCursor(next, prev) {
 
1262
 if (prev && prev.element) {
 
1263
 prev.element.className = 'cursor_stop cursor_hidden';
 
1264
 }
 
1265
 if (next && next.element) {
 
1266
 next.element.className = 'cursor_stop cursor';
 
1267
 lastStop = next.index;
 
1268
 }
 
1269
 }
 
1270
 
 
1271
 function pubRevealed(data) {
 
1272
 updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
 
1273
 if (initilized) {
 
1274
 reloadCursors();
 
1275
 }
 
1276
 }
 
1277
 
 
1278
 function draftRevealed(data) {
 
1279
 updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
 
1280
 if (initilized) {
 
1281
 reloadCursors();
 
1282
 }
 
1283
 }
 
1284
 
 
1285
 function draftDestroyed(data) {
 
1286
 updateCursorForCell(data.cellId, 'nocursor');
 
1287
 if (initilized) {
 
1288
 reloadCursors();
 
1289
 }
 
1290
 }
 
1291
 function reloadCursors() {
 
1292
 kibbles.skipper.reset();
 
1293
 loadCursors();
 
1294
 if (lastStop != null) {
 
1295
 kibbles.skipper.setCurrentStop(lastStop);
 
1296
 }
 
1297
 }
 
1298
 // possibly the simplest way to insert any newly added comments
 
1299
 // is to update the class of the corresponding cursor row,
 
1300
 // then refresh the entire list of rows.
 
1301
 function updateCursorForCell(cellId, className) {
 
1302
 var cell = document.getElementById(cellId);
 
1303
 // we have to go two rows back to find the cursor location
 
1304
 var row = getPreviousElement(cell.parentNode);
 
1305
 row.className = className;
 
1306
 }
 
1307
 // returns the previous element, ignores text nodes.
 
1308
 function getPreviousElement(e) {
 
1309
 var element = e.previousSibling;
 
1310
 if (element.nodeType == 3) {
 
1311
 element = element.previousSibling;
 
1312
 }
 
1313
 if (element && element.tagName) {
 
1314
 return element;
 
1315
 }
 
1316
 }
 
1317
 function loadCursors() {
 
1318
 // register our elements with skipper
 
1319
 var elements = CR_getElements('*', 'cursor_stop');
 
1320
 var len = elements.length;
 
1321
 for (var i = 0; i < len; i++) {
 
1322
 var element = elements[i]; 
 
1323
 element.className = 'cursor_stop cursor_hidden';
 
1324
 kibbles.skipper.append(element);
 
1325
 }
 
1326
 }
 
1327
 function toggleComments() {
 
1328
 CR_toggleCommentDisplay();
 
1329
 reloadCursors();
 
1330
 }
 
1331
 function keysOnLoadHandler() {
 
1332
 // setup skipper
 
1333
 kibbles.skipper.addStopListener(
 
1334
 kibbles.skipper.LISTENER_TYPE.PRE, updateCursor);
 
1335
 // Set the 'offset' option to return the middle of the client area
 
1336
 // an option can be a static value, or a callback
 
1337
 kibbles.skipper.setOption('padding_top', 50);
 
1338
 // Set the 'offset' option to return the middle of the client area
 
1339
 // an option can be a static value, or a callback
 
1340
 kibbles.skipper.setOption('padding_bottom', 100);
 
1341
 // Register our keys
 
1342
 kibbles.skipper.addFwdKey("n");
 
1343
 kibbles.skipper.addRevKey("p");
 
1344
 kibbles.keys.addKeyPressListener(
 
1345
 'u', function() { window.location = detail_url; });
 
1346
 kibbles.keys.addKeyPressListener(
 
1347
 'r', function() { window.location = detail_url + '#publish'; });
 
1348
 
 
1349
 kibbles.keys.addKeyPressListener('j', gotoNextPage);
 
1350
 kibbles.keys.addKeyPressListener('k', gotoPreviousPage);
 
1351
 
 
1352
 
 
1353
 }
 
1354
 window.onload = function() {keysOnLoadHandler();};
 
1355
 </script>
 
1356
 
 
1357
<!-- code review support -->
 
1358
<script src="http://www.gstatic.com/codesite/ph/7642550995449508181/js/code_review_scripts.js"></script>
 
1359
<script type="text/javascript">
 
1360
 
 
1361
 // the comment form template
 
1362
 var form = '<div class="draft"><div class="header"><span class="title">Draft comment:</span></div>' +
 
1363
 '<div class="body"><form onsubmit="return false;"><textarea id="$ID">$BODY</textarea><br>$ACTIONS</form></div>' +
 
1364
 '</div>';
 
1365
 // the comment "plate" template used for both draft and published comment "plates".
 
1366
 var draft_comment = '<div class="draft" ondblclick="$ONDBLCLICK">' +
 
1367
 '<div class="header"><span class="title">Draft comment:</span><span class="actions">$ACTIONS</span></div>' +
 
1368
 '<pre id="$ID" class="body">$BODY</pre>' +
 
1369
 '</div>';
 
1370
 var published_comment = '<div class="published">' +
 
1371
 '<div class="header"><span class="title"><a href="$PROFILE_URL">$AUTHOR:</a></span><div>' +
 
1372
 '<pre id="$ID" class="body">$BODY</pre>' +
 
1373
 '</div>';
 
1374
 
 
1375
 function showPublishInstructions() {
 
1376
 var element = document.getElementById('review_instr');
 
1377
 if (element) {
 
1378
 element.className = 'opened';
 
1379
 }
 
1380
 }
 
1381
 function revsOnLoadHandler() {
 
1382
 // register our source container with the commenting code
 
1383
 var paths = {'svn204': '/trunk/numexpr/win32/pthread.h'}
 
1384
 CR_setup('', 'p', 'numexpr', '', 'svn234', paths,
 
1385
 '', CR_BrowseIntegrationFactory);
 
1386
 // register our hidden ui elements with the code commenting code ui builder.
 
1387
 CR_registerLayoutElement('form', form);
 
1388
 CR_registerLayoutElement('draft_comment', draft_comment);
 
1389
 CR_registerLayoutElement('published_comment', published_comment);
 
1390
 
 
1391
 CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_DRAFT_PLATE, showPublishInstructions);
 
1392
 
 
1393
 CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_PUB_PLATE, pubRevealed);
 
1394
 CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_DRAFT_PLATE, draftRevealed);
 
1395
 CR_registerActivityListener(CR_ACTIVITY_TYPE.DISCARD_DRAFT_COMMENT, draftDestroyed);
 
1396
 
 
1397
 
 
1398
 
 
1399
 
 
1400
 
 
1401
 
 
1402
 
 
1403
 
 
1404
 
 
1405
 var initilized = true;
 
1406
 reloadCursors();
 
1407
 }
 
1408
 window.onload = function() {keysOnLoadHandler(); revsOnLoadHandler();};
 
1409
</script>
 
1410
<script type="text/javascript" src="http://www.gstatic.com/codesite/ph/7642550995449508181/js/dit_scripts.js"></script>
 
1411
 
 
1412
 
 
1413
 
 
1414
 <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/7642550995449508181/js/core_scripts_20081103.js"></script>
 
1415
 <script type="text/javascript" src="/js/codesite_product_dictionary_ph.pack.04102009.js"></script>
 
1416
 </div>
 
1417
<div id="footer" dir="ltr">
 
1418
 
 
1419
 <div class="text">
 
1420
 
 
1421
 &copy;2010 Google -
 
1422
 <a href="/projecthosting/terms.html">Terms</a> -
 
1423
 <a href="http://www.google.com/privacy.html">Privacy</a> -
 
1424
 <a href="/p/support/">Project Hosting Help</a>
 
1425
 
 
1426
 </div>
 
1427
</div>
 
1428
 
 
1429
 <div class="hostedBy" style="margin-top: -20px;">
 
1430
 <span style="vertical-align: top;">Powered by <a href="http://code.google.com/projecthosting/">Google Project Hosting</a></span>
 
1431
 </div>
 
1432
 
 
1433
 
 
1434
 
 
1435
 
 
1436
 
 
1437
 </body>
 
1438
</html>
 
1439