use thread::Thread;
use sync::atomic::{AtomicBool, ATOMIC_BOOL_INIT, Ordering};
use sync::Arc;
-use kinds::{Sync, Send};
-use kinds::marker::{NoSend, NoSync};
+use marker::{Sync, Send};
use mem;
use clone::Clone;
unsafe impl Send for Inner {}
unsafe impl Sync for Inner {}
-#[deriving(Clone)]
+#[derive(Clone)]
pub struct SignalToken {
inner: Arc<Inner>,
}
pub struct WaitToken {
inner: Arc<Inner>,
- no_send: NoSend,
- no_sync: NoSync,
}
+impl !Send for WaitToken {}
+
+impl !Sync for WaitToken {}
+
pub fn tokens() -> (WaitToken, SignalToken) {
let inner = Arc::new(Inner {
thread: Thread::current(),
});
let wait_token = WaitToken {
inner: inner.clone(),
- no_send: NoSend,
- no_sync: NoSync,
};
let signal_token = SignalToken {
inner: inner