1 /** 2 * The thread module provides support for thread creation and management. 3 * 4 * Copyright: Copyright Sean Kelly 2005 - 2012. 5 * License: Distributed under the 6 * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). 7 * (See accompanying file LICENSE) 8 * Authors: Sean Kelly, Walter Bright, Alex Rønne Petersen, Martin Nowak 9 * Source: $(DRUNTIMESRC core/thread/package.d) 10 */ 11 12 module core.thread; 13 14 public import core.time; 15 public import core.thread.fiber; 16 public import core.thread.osthread; 17 public import core.thread.threadbase; 18 public import core.thread.threadgroup; 19 public import core.thread.types; 20 public import core.thread.context; 21 22 23 // this test is here to avoid a cyclic dependency between 24 // core.thread and core.atomic 25 unittest 26 { 27 import core.atomic; 28 29 // Use heap memory to ensure an optimizing 30 // compiler doesn't put things in registers. 31 uint* x = new uint(); 32 bool* f = new bool(); 33 uint* r = new uint(); 34 35 auto thr = new Thread(() 36 { 37 while (!*f) 38 { 39 } 40 41 atomicFence(); 42 43 *r = *x; 44 }); 45 46 thr.start(); 47 48 *x = 42; 49 50 atomicFence(); 51 52 *f = true; 53 54 atomicFence(); 55 56 thr.join(); 57 58 assert(*r == 42); 59 }