trunk/src/osd/modules/sync/work_osd.c
| r242744 | r242745 | |
| 250 | 250 | |
| 251 | 251 | if (osdworkqueuemaxthreads != NULL && sscanf(osdworkqueuemaxthreads, "%d", &osdthreadnum) == 1 && threadnum > osdthreadnum) |
| 252 | 252 | threadnum = osdthreadnum; |
| 253 | | // TODO: also enable this for non-Windows platforms? |
| 254 | | // TODO: it appears lowering SPIN_LOOP_TIME value fixed the scaling issues - needs a test case with a higher workload than n64dd |
| 255 | | #if defined(OSD_WINDOWS) |
| 256 | | // multi-queues with high frequency items should top out at 3 for now |
| 257 | | // since we have scaling problems above that |
| 258 | | if ((flags & WORK_QUEUE_FLAG_HIGH_FREQ) && threadnum > 1) |
| 259 | | threadnum = MIN(threadnum - 1, 3); |
| 260 | | #endif |
| 261 | 253 | |
| 262 | 254 | // clamp to the maximum |
| 263 | 255 | queue->threads = MIN(threadnum, WORK_MAX_THREADS); |