потоки хелп

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by edge911, 28 May 2011.

  1. edge911

    edge911 Active Member

    Joined:
    21 Feb 2009
    Messages:
    105
    Likes Received:
    142
    Reputations:
    15
    С++ winapi

    Code:
    //глобальные
    HANDLE thread1;
    HANDLE thread2;
    
    int n1 = 0;
    int n2 = 0;
    
    создал потоки, поставил приоритеты
    Code:
    //из int WinMain
    	thread1 = CreateThread(NULL,0,ThreadFunc1,NULL,0,0);
    	thread2 = CreateThread(NULL,0,ThreadFunc2,NULL,0,0);
    
    	SetThreadPriority(thread1,THREAD_PRIORITY_IDLE);
    	  SetThreadPriority(thread2,THREAD_PRIORITY_TIME_CRITICAL);
    
    Code:
    DWORD WINAPI ThreadFunc1(PVOID pvParam)
    {
    
    	while(1)
    	{
    		n1++;
            }
    }
    
    DWORD WINAPI ThreadFunc2(PVOID pvParam)
    {
    	while(1)
    	{
    		n2++;
            }
    }
    
    но не смотря на приоритеты, значения одинаковые n1 и n2.
    помогите разобраться в чем дело:(
    (хочу увидеть разницу в приоритетах, а при вызове GetThreadPriority показывает, что приоритеты установлены....)
     
    #1 edge911, 28 May 2011
    Last edited: 28 May 2011
  2. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Как увидеть результат :
    1. Загрузи систему, тогда у этих потоков будет видна разница(Главное что бы в диспечере процессов "Бездействие системы" было 00)
    2. Вместо инкремента числа поставь пузырьковую сортировку на огромном массиве и замеряй время.

    Когда про APC читал, наткнулся на интересную статью, там написано как и почему, почитай :
    http://www.wasm.ru/article.php?article=scheduler
     
    1 person likes this.