Avatar billede farmanden Nybegynder
08. februar 2004 - 13:59 Der er 22 kommentarer

parbegin - 20 hurtige point!

jeg har brugt en parbegin statement og får en fejlmeddelse om forkert brug af void-statement - hvad gør jeg ved den?

kode:
int main(void){ parbegin(start(0), start(1));}
void start(int i){};

fejlmeddelelse:
"ugyldig brug af void udtryk"
"ugyldig brug af void udtryk"
(begge til linien med parbegin...)
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:23 #1
Kom nu!! Jeg har lige forhøjet pointene med ydeligere 20 point ;-)
Avatar billede arne_v Ekspert
08. februar 2004 - 14:24 #2
Jeg kender ikke parbegin (den er ikke standard så vidt jeg ved).

Men jeg formoder at du vil have kaldt start 2 gange og udført det parallelt - korrekt ?
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:25 #3
nemlig!
Avatar billede arne_v Ekspert
08. februar 2004 - 14:27 #4
Hvordan er parbegin erklæret/defineret ?
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:29 #5
jeg så den i en bog, hvor den stod fremhævet som om det var et reserveret ord - der stod ikke noget specielt bibliotek, den skulle stå i, så jeg gik ud fra at det var standard...
compileren brokker sig jo heller ikke over udtrykket, men over "void"...(så vidt jeg lige fatter...)
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:31 #6
har du da nogle andre ideer?
Avatar billede arne_v Ekspert
08. februar 2004 - 14:33 #7
Prøv lige og se hvilken fejl den giver på:

parbegin(start, start);

hvor:

void start()
{
}
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:38 #8
nu får du lige det hele :-S

/tmp/ccAOLLYC.o(.text+0x85): in function "main":
: undefineret reference til "parbegin"
collect 2: id return 1 exit status

så den er jo nok ikke så voldsomt godt defineret - eller hvad...
Avatar billede arne_v Ekspert
08. februar 2004 - 14:39 #9
Hvad compiler bruger du ?
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:40 #10
gcc
Avatar billede arne_v Ekspert
08. februar 2004 - 14:42 #11
På Linux ?
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:42 #12
yup
Avatar billede arne_v Ekspert
08. februar 2004 - 14:43 #13
Jeg kan ikke se at der skulle være en parbegin i GCC/Linux.

Hvad er det for en bog du har set den konstruktion i ?
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:44 #14
en lærebog... - operating systems...
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:44 #15
men har du en bedre ide til at få dem til at køre parallelt?
Avatar billede arne_v Ekspert
08. februar 2004 - 14:46 #16
Du kan forke processer eller bruge POSIX tråde.
Avatar billede arne_v Ekspert
08. februar 2004 - 14:47 #17
man fork

og

man pthread_create

ville være gode steder at starte.
Avatar billede arne_v Ekspert
08. februar 2004 - 14:48 #18
De er ihvertfald i alle Linux jeg kender.
Avatar billede farmanden Nybegynder
08. februar 2004 - 14:54 #19
skal lige teste - det ta'r nok en halv times tid... ;-)
Avatar billede arne_v Ekspert
08. februar 2004 - 15:12 #20
Både forking og POSIX Threading kan godt tage en del timer at komme til bunds i !
Avatar billede farmanden Nybegynder
08. februar 2004 - 15:21 #21
jeg kan få 2 til at køre parallelt på følgende måde:

pid_t pid;
pid=fork();

switch (pid)
{
case 0: {start(0);break;}
default: {start(1);break;}
}
men hvad hvis jeg nu skal starte start(2) og start (3) samtidig også???
pid ser ud til at være 0 altid...
Avatar billede arne_v Ekspert
08. februar 2004 - 17:47 #22
pid==0 for alle childs

så du må skulle lave en konstruktion a la:

for(i=0;i<4;i++)
{
  pid=fork();
  if(pid==0)
  {
      start(i);
      exit(0);
  }
}

parent starter 4 childs
child kalder start og exiter derefter
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