WxThreads
From Audacity Wiki
- Mchinen Did a test to check wxMac priorities. Turns out they do work, but threads at min priority only go about 10% slower than the default priority, and only 20% slower than the max priority:
if someone wants to try it out and paste the linux result, that would be helpful. I've included the changes you need to make to the sample in wx2.8.7/samples/thread/thread.cpp I made to avoid Sleep(1000) for each thread and to do a huge nothing loop instead. Thread 0x1878200 started (priority = 0). [0] Thread 0x1878200 here. Thread 0x1861a00 started (priority = 50). [0] Thread 0x1861a00 here. [1] Thread 0x1878200 here. [1] Thread 0x1861a00 here. [2] Thread 0x1878200 here. [2] Thread 0x1861a00 here. [3] Thread 0x1878200 here. [3] Thread 0x1861a00 here. [4] Thread 0x1878200 here. [4] Thread 0x1861a00 here. [5] Thread 0x1878200 here. [5] Thread 0x1861a00 here. [6] Thread 0x1878200 here. [6] Thread 0x1861a00 here. [7] Thread 0x1878200 here. [7] Thread 0x1861a00 here. [8] Thread 0x1878200 here. [8] Thread 0x1861a00 here. [9] Thread 0x1878200 here. [9] Thread 0x1861a00 here. Thread 0x1878200 finished. Thread 0x1861a00 finished. trial 2: Thread 0x1861600 started (priority = 100). Thread 0x186b400 started (priority = 50). Thread 0x1846e00 started (priority = 50). [0] Thread 0x1861600 here. Thread 0x186ee00 started (priority = 0). [0] Thread 0x1846e00 here. [0] Thread 0x186b400 here. [0] Thread 0x186ee00 here. [1] Thread 0x1861600 here. [1] Thread 0x1846e00 here. [1] Thread 0x186b400 here. [1] Thread 0x186ee00 here. [2] Thread 0x1861600 here. [2] Thread 0x1846e00 here. [2] Thread 0x186b400 here. [2] Thread 0x186ee00 here. [3] Thread 0x1861600 here. [3] Thread 0x1846e00 here. [3] Thread 0x186b400 here. [4] Thread 0x1861600 here. [3] Thread 0x186ee00 here. [4] Thread 0x186b400 here. [4] Thread 0x1846e00 here. [5] Thread 0x1861600 here. [4] Thread 0x186ee00 here. [5] Thread 0x186b400 here. [5] Thread 0x1846e00 here. [6] Thread 0x1861600 here. [5] Thread 0x186ee00 here. [7] Thread 0x1861600 here. [6] Thread 0x1846e00 here. [6] Thread 0x186b400 here. [8] Thread 0x1861600 here. [7] Thread 0x1846e00 here. [7] Thread 0x186b400 here. [6] Thread 0x186ee00 here. [9] Thread 0x1861600 here. [8] Thread 0x1846e00 here. [8] Thread 0x186b400 here. [7] Thread 0x186ee00 here. Thread 0x1861600 finished. [9] Thread 0x1846e00 here. [9] Thread 0x186b400 here. [8] Thread 0x186ee00 here. Thread 0x1846e00 finished. Thread 0x186b400 finished. [9] Thread 0x186ee00 here. Thread 0x186ee00 finished. void *MyThread::Entry() { wxString text; text.Printf(wxT("Thread 0x%lx started (priority = %u).\n"), GetId(), GetPriority()); WriteText(text); // wxLogMessage(text); -- test wxLog thread safeness for ( m_count = 0; m_count < 10; m_count++ ) { // check if we were asked to exit if ( TestDestroy() ) break; text.Printf(wxT("[%u] Thread 0x%lx here.\n"), m_count, GetId()); WriteText(text); //test priorities for(int i=0;i<1000000000;i++) i=i+0; // wxSleep() can't be called from non-GUI thread! // wxThread::Sleep(1000); } text.Printf(wxT("Thread 0x%lx finished.\n"), GetId()); WriteText(text); // wxLogMessage(text); -- test wxLog thread safeness return NULL; }