Avatar billede gedebuk Nybegynder
21. juli 2002 - 19:01 Der er 4 kommentarer og
2 løsninger

Tråde i VC++

Hejsa!

Jeg vil gerne lære lidt om at programmere med tråde i C++. Jeg har en del erfaring med tråde i Java, hvor det jo er hamrende let.
Jeg har søgt en del på nettet og har fundet noget om "posix threads", men det er kun til GNU-kompileren, men jeg vil gerne kunne køre det i Visual C++.
Er der nogen, der har et link til, hvor man kan finde mere om det?

Mvh. Mads Pedersen
Avatar billede jpk Nybegynder
22. juli 2002 - 10:06 #1
msdn.microsoft.com
Søg på AfxBeginThread
Avatar billede kamikaze Nybegynder
22. juli 2002 - 10:32 #2
Her er et meget simpelt eksempel med 2 tråde. Det kompilerer og kører som konsol applikation i MSVC6.0:

#include <windows.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>


DWORD WINAPI ThreadFunc1( LPVOID lpParam )
{
    int iCount = 0;
    while(1)
    {
        cout << "Thread 1 : " << iCount++ << endl;
        Sleep(1000);
    }
    return 0;
}

DWORD WINAPI ThreadFunc2( LPVOID lpParam )
{
    int iCount = 10;
    while(1)
    {
        cout << "Thread 2 : " << iCount++ << endl;
        Sleep(1000);
    }
    return 0;
}

VOID main( VOID )
{
    DWORD dwThread1Id, dwThread2Id, dwThrdParam = 0;
    HANDLE hThread[2];
    hThread[0] = CreateThread(
        NULL,                        // no security attributes
        0,                          // use default stack size 
        ThreadFunc1,                  // thread function
        &dwThrdParam,                // argument to thread function
        0,                          // use default creation flags
        &dwThread1Id);                // returns the thread identifier

    hThread[1] = CreateThread(
        NULL,
        0,
        ThreadFunc2,
        &dwThrdParam,
        0,
        &dwThread2Id);

  // Check the return value for success.

  if (hThread[0] == NULL)
      cout << "CreateThread failed." << endl;

  if (hThread[1] == NULL)
      cout << "CreateThread failed." << endl;

  SetThreadPriority(hThread[0], THREAD_PRIORITY_NORMAL);
  SetThreadPriority(hThread[1], THREAD_PRIORITY_ABOVE_NORMAL);

  cout << "<any key>" << endl;
  getch();
  CloseHandle( hThread[0] );
  CloseHandle( hThread[1] );
}
Avatar billede kamikaze Nybegynder
22. juli 2002 - 10:36 #3
Søg evt. efter CreateThread i MSDN... :o)
Avatar billede kamikaze Nybegynder
25. juli 2002 - 14:30 #4
Har du fundet ud af det? Mangler du mere info???
Avatar billede gedebuk Nybegynder
25. juli 2002 - 14:57 #5
Jeg takker mange gange for svarene :)
Avatar billede kamikaze Nybegynder
25. juli 2002 - 15:13 #6
Takker for points :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester