format PE64 GUI 5.0
include 'WIN64AX.INC'


.code 
start:



znova:	mov edi,obsah	  ;			     0=runs 4=CREATE_SUSPENDED
	invoke CreateThread,0,1024,vlakno1,dword edi,4,dword [thread1] ;VYTVORI VLAKNO
	invoke SetThreadIdealProcessor,dword [thread1],4 ;IDEALNY PROCESOR
	invoke ResumeThread,dword [thread1] ;ZOBUDE THREAD

	invoke Sleep, 200 ;CHVILKA STRPENIA

	mov edi,obsah
	invoke CreateThread,0,1024,vlakno2,dword edi,4,dword [thread2] ;VYTVORI VLAKNO
	invoke SetThreadIdealProcessor,dword [thread2],6
	invoke ResumeThread,dword [thread2] ;ZOBUDE THREAD

	dec [kolko]    ;KOLKO VLAKEN SPUSTI
	jnz znova


hlav_vlakno: invoke Sleep, 5 ;CPU IDLE ABY NEVYTAZIL CPU NA 100%
	cmp [ukonci],1	 ;AK UKONCI=1 NIEKTORE VLAKNO SKONCILO
	jnz hlav_vlakno
	invoke ExitProcess, 0  ;UKONCI HLAVNE VLAKNO AJ PODVLAKNA





;VLAKNO BEZ ZATAZENIA LEN ZOBRAZI MSGBOX
proc vlakno1
     inc byte [ecx]   ;INC OBSAH
     invoke MessageBox, 0, addr obsah, addr vlakno, 0 ;STOP NA MSGBOX
     mov al,1
     mov [ukonci],al ;MSGBOX BOL UKONCENY - VSETKO UKONCI
     ret

endp



;VYTAZENE VLAKNO
proc vlakno2
	;invoke  GetCurrentThread
	;invoke  SetThreadAffinityMask,eax,1
vlakno3: ;invoke Sleep, 1 ;CHVILKA STRPENIA
	jmp vlakno3
	cmp [ukonci],1
	jnz vlakno3
	invoke ExitThread

endp





.data
kolko db 1 ;KOLKO VLAKIEN SPUSTIT

thread1 dq 0
thread2 dq 0

vlakno db "Vlakno"  ;BEZ NULY NA KONCI ABY ZOBRAZIL AJ KOLKATE VLAKNO
obsah db "1",0	;CISLO VLAKNA AKO ASCII
ukonci db 0 ;1=UKONCI HLAVNE VLAKNO AJ PODVLAKNA


.end start