src/jdk.packager/share/native/library/common/PlatformThread.cpp
branchJDK-8200758-branch
changeset 56982 e094d5483bd6
parent 56854 aedce3eaaf17
equal deleted inserted replaced
56963:eaca4369b068 56982:e094d5483bd6
    38 DWORD WINAPI PlatformThread::Do(LPVOID Data) {
    38 DWORD WINAPI PlatformThread::Do(LPVOID Data) {
    39     PlatformThread* self = (PlatformThread*)Data;
    39     PlatformThread* self = (PlatformThread*)Data;
    40     self->Execute();
    40     self->Execute();
    41     return 0;
    41     return 0;
    42 }
    42 }
    43 #endif //WINDOWS
    43 #endif // WINDOWS
    44 #ifdef POSIX
    44 #ifdef POSIX
    45 void* PlatformThread::Do(void *Data) {
    45 void* PlatformThread::Do(void *Data) {
    46     PlatformThread* self = (PlatformThread*)Data;
    46     PlatformThread* self = (PlatformThread*)Data;
    47     self->Execute();
    47     self->Execute();
    48     pthread_exit(NULL);
    48     pthread_exit(NULL);
    49 }
    49 }
    50 #endif //POSIX
    50 #endif // POSIX
    51 
    51 
    52 void PlatformThread::Run() {
    52 void PlatformThread::Run() {
    53 #ifdef WINDOWS
    53 #ifdef WINDOWS
    54     FHandle = CreateThread(NULL, 0, Do, this, 0, &FThreadID);
    54     FHandle = CreateThread(NULL, 0, Do, this, 0, &FThreadID);
    55 #endif //WINDOWS
    55 #endif // WINDOWS
    56 #ifdef POSIX
    56 #ifdef POSIX
    57     pthread_create(&FHandle, NULL, Do, this);
    57     pthread_create(&FHandle, NULL, Do, this);
    58 #endif //POSIX
    58 #endif // POSIX
    59 }
    59 }
    60 
    60 
    61 void PlatformThread::Terminate() {
    61 void PlatformThread::Terminate() {
    62 #ifdef WINDOWS
    62 #ifdef WINDOWS
    63     CloseHandle(FHandle);
    63     CloseHandle(FHandle);
    64 #endif //WINDOWS
    64 #endif // WINDOWS
    65 #ifdef POSIX
    65 #ifdef POSIX
    66     pthread_cancel(FHandle);
    66     pthread_cancel(FHandle);
    67 #endif //POSIX
    67 #endif // POSIX
    68 }
    68 }
    69 
    69 
    70 void PlatformThread::Wait() {
    70 void PlatformThread::Wait() {
    71 #ifdef WINDOWS
    71 #ifdef WINDOWS
    72     WaitForSingleObject(FHandle, INFINITE);
    72     WaitForSingleObject(FHandle, INFINITE);
    73 #endif //WINDOWS
    73 #endif // WINDOWS
    74 #ifdef POSIX
    74 #ifdef POSIX
    75     pthread_join(FHandle, NULL);
    75     pthread_join(FHandle, NULL);
    76 #endif //POSIX
    76 #endif // POSIX
    77 }
    77 }