| 57 | } |
| 58 | |
| 59 | int ZSTD_pthread_join(ZSTD_pthread_t thread, void **value_ptr) |
| 60 | { |
| 61 | DWORD result; |
| 62 | |
| 63 | if (!thread.handle) return 0; |
| 64 | |
| 65 | result = WaitForSingleObject(thread.handle, INFINITE); |
| 66 | switch (result) { |
| 67 | case WAIT_OBJECT_0: |
| 68 | if (value_ptr) *value_ptr = thread.arg; |
| 69 | return 0; |
| 70 | case WAIT_ABANDONED: |
| 71 | return EINVAL; |
| 72 | default: |
| 73 | return GetLastError(); |
| 74 | } |
| 75 | } |
| 76 | |
| 77 | #endif /* ZSTD_MULTITHREAD */ |
| 78 |