Тема: Непорозуміння з потоками
Усім доброго вечора.
Трішки практикую з потоками, і.. виникло недоуміння від наступного:
proc ThreadProc
locals
buf rb 10
endl
xor ecx, ecx
inc ecx
@@: push ecx
cinvoke wsprintfA, addr buf, frmt, ecx
invoke OutputDebugStringA, addr buf
invoke Sleep, 1000
pop ecx
inc ecx
jmp @b
ret
endp
entry $
invoke CreateThread, 0, 0, ThreadProc, 0, 0, lpThreadId
mov [hProcess], eax
invoke Sleep, 1000 * 2
invoke OutputDebugStringA, fin
invoke TerminateProcess, [hProcess], 0
invoke CloseHandle, [hProcess]
invoke ExitProcess, 0
fin db 'finish', 0
frmt db '%d', 0
lpThreadId rd 1
hProcess rd 1
..тобто послідовний запуск програми (5 разів), дає дивний результат - то 1, 2 то 1, 2, 3. Хоча логічніше буде саме 1, 2.
Це так треба, чи десь моя недоробка?)