Description:
box uses user time
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r130:db5312fad511 - - 1 file changed: 26 inserted, 4 deleted
@@ -343,10 +343,32 | |||
|
343 | 343 | ifsuccess = EXE_RESULT_MEMORY; |
|
344 | 344 | } |
|
345 | 345 | |
|
346 | - if((ifsuccess == EXE_RESULT_MEMORY) || | |
|
347 | - (WaitForSingleObject(pi.hProcess, | |
|
348 | - (int)(t*1000) + 1 | |
|
349 | - - INITIAL_WAIT_FOR_MEM_CHECK)==WAIT_TIMEOUT)) { | |
|
346 | + //printf("PID: %d\n", pi.dwProcessId); | |
|
347 | + | |
|
348 | + if(ifsuccess != EXE_RESULT_MEMORY) { | |
|
349 | + int based_time = (int)(t*1000) + 1 - INITIAL_WAIT_FOR_MEM_CHECK; | |
|
350 | + bool major_timed_out = (WaitForSingleObject(pi.hProcess, | |
|
351 | + based_time)==WAIT_TIMEOUT); | |
|
352 | + if(major_timed_out) { | |
|
353 | + // wait some more for user time. | |
|
354 | + double time_used = get_process_time_usage(pi.hProcess); | |
|
355 | + while(time_used <= t) { | |
|
356 | + int iter_time = 100; | |
|
357 | + if(t - time_used < 200) | |
|
358 | + iter_time = 20; | |
|
359 | + bool iter_timed_out = (WaitForSingleObject(pi.hProcess, | |
|
360 | + iter_time)==WAIT_TIMEOUT); | |
|
361 | + if(!iter_timed_out) | |
|
362 | + break; | |
|
363 | + | |
|
364 | + time_used = get_process_time_usage(pi.hProcess); | |
|
365 | + //printf("%lf\n",time_used); | |
|
366 | + } | |
|
367 | + ifsuccess = EXE_RESULT_TIMEOUT; | |
|
368 | + } | |
|
369 | + } | |
|
370 | + | |
|
371 | + if((ifsuccess == EXE_RESULT_MEMORY) || (ifsuccess == EXE_RESULT_TIMEOUT)) { | |
|
350 | 372 | // Kill process, because (1) it used too much memory, or (2) time limit |
|
351 | 373 | HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pi.dwProcessId); |
|
352 | 374 |
You need to be logged in to leave comments.
Login now