Avatar billede soreno Praktikant
18. september 2002 - 13:37 Der er 3 kommentarer og
1 løsning

CreateThread

hvordan får jeg overført pStartTal til min tråd, altså giver et parameter til testThread ?

#include <windows.h>
#include <stdio.h>

DWORD WINAPI testThread(LPVOID lpParam);

int main(int argc, char **argv)
{
  int startTal = 1000;
  int *pStartTal = &startTal;

  HANDLE hTestThread;
  DWORD testThreadID = 0;

  //overfør pStartTal til testThread, men hvor og hvordan ??
  hTestThread = CreateThread(NULL, 0, testThread, (LPVOID)NULL, 0, &testThreadID);

  int i=0;
  while(true)
  {
      printf("[%i]*thread* - main\n", i);
      i++;
      Sleep(250);
  }

  return 0;
}


DWORD WINAPI testThread(LPVOID lpParam)
{
  int i= *minOverførteVariable; //...
  while(true)
  {
      printf("\t[%i]*thread* - testThread\n", i);
      i--;
      Sleep(250);
  }
}
Avatar billede chries Nybegynder
18. september 2002 - 13:42 #1
hvis tråden ikke når at aflæse pStartTal før du laver den næste, får den forkert tal.

#include <windows.h>
#include <stdio.h>

DWORD WINAPI testThread(int *pStartTal);

int main(int argc, char **argv)
{
  int startTal = 1000;
  int *pStartTal = &startTal;

  HANDLE hTestThread;
  DWORD testThreadID = 0;

  //overfør pStartTal til testThread, men hvor og hvordan ??
  hTestThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)testThread, (LPVOID)pStartTal, 0, &testThreadID);

  int i=0;
  while(true)
  {
      printf("[%i]*thread* - main\n", i);
      i++;
      Sleep(250);
  }

  return 0;
}


DWORD WINAPI testThread(int *pStartTal)
{
  int i= *pStartTal; //...
  while(true)
  {
      printf("\t[%i]*thread* - testThread\n", i);
      i--;
      Sleep(250);
  }
}
Avatar billede chries Nybegynder
18. september 2002 - 13:48 #2
altså hvis du peger på den samme variabel :-)
Avatar billede soreno Praktikant
18. september 2002 - 13:51 #3
forresten, hvad formål har det at typecaste testThread med (LPTHREAD_START_ROUTINE) ?
Avatar billede chries Nybegynder
18. september 2002 - 13:53 #4
det er istedet for at tråden bliver erklærer som:
DWORD WINAPI testThread(LPVOID lpParam)
{
  int *p = (int*)lpParam;

jeg kan bedst lige den anden metode.
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