Index: runtime/vm/os_thread_macos.cc |
diff --git a/runtime/vm/os_thread_macos.cc b/runtime/vm/os_thread_macos.cc |
index bcac82829670b1f7970c1c8cfc92941a1955a131..ffb94e99fe559cf5a1ebecdc9e31ac7803f117f0 100644 |
--- a/runtime/vm/os_thread_macos.cc |
+++ b/runtime/vm/os_thread_macos.cc |
@@ -94,9 +94,6 @@ int OSThread::Start(ThreadStartFunction function, uword parameter) { |
int result = pthread_attr_init(&attr); |
RETURN_ON_PTHREAD_FAILURE(result); |
- result = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); |
- RETURN_ON_PTHREAD_FAILURE(result); |
- |
result = pthread_attr_setstacksize(&attr, OSThread::GetMaxStackSize()); |
RETURN_ON_PTHREAD_FAILURE(result); |
@@ -116,6 +113,8 @@ int OSThread::Start(ThreadStartFunction function, uword parameter) { |
ThreadLocalKey OSThread::kUnsetThreadLocalKey = |
static_cast<pthread_key_t>(-1); |
ThreadId OSThread::kInvalidThreadId = reinterpret_cast<ThreadId>(NULL); |
+ThreadJoinId OSThread::kInvalidThreadJoinId = |
+ reinterpret_cast<ThreadJoinId>(NULL); |
ThreadLocalKey OSThread::CreateThreadLocal(ThreadDestructor destructor) { |
pthread_key_t key = kUnsetThreadLocalKey; |
@@ -151,8 +150,13 @@ ThreadId OSThread::GetCurrentThreadId() { |
} |
-bool OSThread::Join(ThreadId id) { |
- return false; |
+ThreadJoinId OSThread::GetCurrentThreadJoinId() { |
+ return pthread_self(); |
+} |
+ |
+ |
+void OSThread::Join(ThreadJoinId id) { |
+ ASSERT(pthread_join(id, NULL) == 0); |
} |