Showing the changes to src/core/util_thread.cpp (1 of 31 files). Show all
Unified · Split
| @@ -81,13 +81,15 @@ XThread::~XThread( ) · 80 unmodified lines | |||
| 81 | // TODO: find an alternative for Android? | 81 | // TODO: find an alternative for Android? |
| 82 | #if defined(__PLATFORM_MACOSX__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_OPENBSD__) | 82 | #if defined(__PLATFORM_MACOSX__) || ( defined(__PLATFORM_LINUX__) && !defined(__ANDROID__) ) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_OPENBSD__) |
| 83 | // log | 83 | // log |
| 84 | EM_log( CK_LOG_FINER, "cancelling XThread: %u on thread: %u", (t_CKUINT)thread, (t_CKUINT)pthread_self() ); | 84 | EM_log( CK_LOG_FINER, "cancelling thread [0x%x] from [0x%x]...", getID(thread), getID(pthread_self()) ); |
| 85 | pthread_cancel(thread); | 85 | pthread_cancel(thread); |
| 86 | pthread_join(thread, NULL); | 86 | pthread_join(thread, NULL); |
| 87 | // log | 87 | // log |
| 88 | EM_log( CK_LOG_FINER, "joined with XThread: %u on thread: %u", (t_CKUINT)thread, (t_CKUINT)pthread_self() ); | 88 | EM_log( CK_LOG_FINER, "joined with thread [0x%x] from [0x%x]", getID(thread), getID(pthread_self()) ); |
| 89 | #elif defined(__PLATFORM_WIN32__) | 89 | #elif defined(__PLATFORM_WIN32__) |
| 90 | TerminateThread((HANDLE)thread, 0); | 90 | // log |
| 91 | EM_log( CK_LOG_FINER, "terminating thread [0x%x] from [0x%x]...", getID(thread), (t_CKUINT)GetCurrentThreadId() ); | ||
| 92 | TerminateThread( (HANDLE)thread, 0 ); | ||
| 91 | #endif | 93 | #endif |
| 92 | } | 94 | } |
| 93 | } | 95 | } |
| @@ -105,11 +107,18 @@ bool XThread::start( THREAD_FUNCTION routine, void * ptr ) · 11 unmodified lines | |||
| 105 | 107 | ||
| 106 | #if ( defined(__PLATFORM_MACOSX__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_OPENBSD__) ) | 108 | #if ( defined(__PLATFORM_MACOSX__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) || defined(__PLATFORM_OPENBSD__) ) |
| 107 | if( pthread_create( &thread, NULL, *routine, ptr ) == 0 ) | 109 | if( pthread_create( &thread, NULL, *routine, ptr ) == 0 ) |
| 110 | { | ||
| 111 | EM_log( CK_LOG_FINER, "starting thread [0x%x] from [0x%x]...", thread, getID(pthread_self()) ); | ||
| 108 | result = true; | 112 | result = true; |
| 113 | } | ||
| 109 | #elif defined(__PLATFORM_WIN32__) | 114 | #elif defined(__PLATFORM_WIN32__) |
| 110 | unsigned thread_id; | 115 | unsigned thread_id; |
| 111 | thread = _beginthreadex( NULL, 0, routine, ptr, 0, &thread_id ); | 116 | thread = _beginthreadex( NULL, 0, routine, ptr, 0, &thread_id ); |
| 112 | if( thread ) result = true; | 117 | if( thread ) |
| 118 | { | ||
| 119 | EM_log( CK_LOG_FINER, "starting thread [0x%x] from [0x%x]...", thread_id, (t_CKUINT)GetCurrentThreadId() ); | ||
| 120 | result = true; | ||
| 121 | } | ||
| 113 | #endif | 122 | #endif |
| 114 | return result; | 123 | return result; |
| 115 | } | 124 | } |
| @@ -164,6 +173,22 @@ void XThread :: test( ) · 48 unmodified lines | |||
| 164 | 173 | ||
| 165 | 174 | ||
| 166 | 175 | ||
| 176 | //----------------------------------------------------------------------------- | ||
| 177 | // name: getID() | 1.5.0.4 (ge) added | ||
| 178 | // desc: get thread id from a thread handle | ||
| 179 | //----------------------------------------------------------------------------- | ||
| 180 | t_CKUINT XThread::getID( THREAD_HANDLE t ) | ||
| 181 | { | ||
| 182 | #if ( defined(__PLATFORM_MACOSX__) || defined(__PLATFORM_LINUX__) || defined(__WINDOWS_PTHREAD__) ) | ||
| 183 | return (t_CKUINT)t; | ||
| 184 | #elif defined(__PLATFORM_WIN32__) | ||
| 185 | return (t_CKUINT)GetThreadId( (HANDLE)t ); | ||
| 186 | #endif | ||
| 187 | } | ||
| 188 | |||
| 189 | |||
| 190 | |||
| 191 | |||
| 167 | //----------------------------------------------------------------------------- | 192 | //----------------------------------------------------------------------------- |
| 168 | // name: XMutex() | 193 | // name: XMutex() |
| 169 | // desc: ... | 194 | // desc: ... |
| @@ -295,11 +320,11 @@ void XWriteThread::shutdown() · 125 unmodified lines | |||
| 295 | SmartPushLog logPush; | 320 | SmartPushLog logPush; |
| 296 | 321 | ||
| 297 | // log | 322 | // log |
| 298 | EM_log( CK_LOG_FINER, "waiting on write thread: %u", (t_CKUINT)m_thread.getThread() ); | 323 | EM_log( CK_LOG_FINER, "waiting on write thread [0x%x]...", m_thread.getID() ); |
| 299 | // wait on the thread | 324 | // wait on the thread |
| 300 | m_thread.wait( -1, false ); | 325 | m_thread.wait( -1, false ); |
| 301 | // log | 326 | // log |
| 302 | EM_log( CK_LOG_FINER, "done waiting for thread: %u", (t_CKUINT)m_thread.getThread() ); | 327 | EM_log( CK_LOG_FINER, "done waiting for thread [0x%x]", m_thread.getID() ); |
| 303 | } | 328 | } |
| 304 | 329 | ||
| 305 | 330 | ||
| @@ -315,9 +340,9 @@ size_t XWriteThread::fwrite(const void * ptr, size_t size, size_t nitems, FILE * · 9 unmodified lines | |||
| 315 | flush_data_buffer(); | 340 | flush_data_buffer(); |
| 316 | 341 | ||
| 317 | // TODO: overflow detection | 342 | // TODO: overflow detection |
| 318 | if(m_data_buffer->put((char*)ptr, size*nitems) == 0) | 343 | if( m_data_buffer->put((char*)ptr, size*nitems) == 0 ) |
| 319 | { | 344 | { |
| 320 | EM_log(CK_LOG_SEVERE, "XWriteThread::fwrite: data buffer overflow"); | 345 | EM_log( CK_LOG_SEVERE, "XWriteThread::fwrite(): data buffer overflow!" ); |
| 321 | } | 346 | } |
| 322 | 347 | ||
| 323 | m_bytes_in_buffer += size*nitems; | 348 | m_bytes_in_buffer += size*nitems; |
| @@ -435,8 +460,8 @@ unsigned XWriteThread::write_cb(void * _thiss) · 111 unmodified lines | |||
| 435 | msg.write.data_size); | 460 | msg.write.data_size); |
| 436 | if(actual_size != msg.write.data_size) | 461 | if(actual_size != msg.write.data_size) |
| 437 | { | 462 | { |
| 438 | EM_log(CK_LOG_SEVERE, "XWriteThread: buffered data size mismatch (%li : %li)", | 463 | EM_log( CK_LOG_SEVERE, "XWriteThread: buffered data size mismatch (%li : %li)", |
| 439 | msg.write.data_size, actual_size); | 464 | msg.write.data_size, actual_size ); |
| 440 | } | 465 | } |
| 441 | 466 | ||
| 442 | ::fwrite(_this->m_thread_buffer, 1, actual_size, msg.file); | 467 | ::fwrite(_this->m_thread_buffer, 1, actual_size, msg.file); |
| @@ -492,7 +517,7 @@ t_CKBOOL XThreadUtil::set_priority( CHUCK_THREAD tid, t_CKINT priority ) · 49 unmodified lines | |||
| 492 | int policy; | 517 | int policy; |
| 493 | 518 | ||
| 494 | // log | 519 | // log |
| 495 | EM_log( CK_LOG_INFO, "setting thread priority to: %ld...", priority ); | 520 | EM_log( CK_LOG_INFO, "setting thread [0x%x] priority to: %ld...", (t_CKUINT)tid, priority ); |
| 496 | 521 | ||
| 497 | // get for thread | 522 | // get for thread |
| 498 | if( pthread_getschedparam( tid, &policy, ¶m) ) | 523 | if( pthread_getschedparam( tid, &policy, ¶m) ) |
| @@ -552,7 +577,7 @@ t_CKBOOL XThreadUtil::set_priority( CHUCK_THREAD tid, t_CKINT priority ) · 53 unmodified lines | |||
| 552 | if( !priority ) return TRUE; | 577 | if( !priority ) return TRUE; |
| 553 | 578 | ||
| 554 | // log | 579 | // log |
| 555 | EM_log( CK_LOG_FINE, "setting thread priority to: %ld...", priority ); | 580 | EM_log( CK_LOG_FINE, "setting thread [0x%x] priority to: %ld...", (t_CKUINT)GetThreadId(tid), priority ); |
| 556 | 581 | ||
| 557 | // set the priority the thread, windows style | 582 | // set the priority the thread, windows style |
| 558 | if( !SetThreadPriority( tid, priority ) ) | 583 | if( !SetThreadPriority( tid, priority ) ) |