// stores a thread handle
IntPtr handle;
IntPtr native_handle; // used only on Win32
-
- /* Note this is an opaque object (an array), not a CultureInfo */
- private object cached_culture_info;
+ IntPtr unused3;
/* accessed only from unmanaged code */
private IntPtr name;
private int name_len;
private int abort_state_handle;
/* thread_id is only accessed from unmanaged code */
internal Int64 thread_id;
-
- /* start_notify is used by the runtime to signal that Start()
- * is ok to return
- */
private IntPtr stack_ptr;
private UIntPtr static_data; /* GC-tracked */
private IntPtr runtime_thread_info;
private int priority = (int) ThreadPriority.Normal;
private IntPtr owned_mutex;
private IntPtr suspended_event;
+ private int self_suspended;
/*
* These fields are used to avoid having to increment corlib versions
* when a new field is added to the unmanaged MonoThread structure.
}
}
- // Looks up the object associated with the current thread
- // this is called by the JIT directly, too
[MethodImplAttribute(MethodImplOptions.InternalCall)]
- private extern static InternalThread CurrentInternalThread_internal();
+ private extern static Thread GetCurrentThread ();
public static Thread CurrentThread {
[ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
get {
- if (current_thread == null)
- current_thread = new Thread (CurrentInternalThread_internal ());
- return current_thread;
+ Thread current = current_thread;
+ if (current != null)
+ return current;
+ // This will set the current_thread tls variable
+ return GetCurrentThread ();
}
}