Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.04.14
Prihlásený: 25.05.14
Príspevky: 1
Témy: 1
Príspevok NapísalOffline : 22.04.2014 16:34

Chcel by som sa opýtať či by mi nevedel niekto pomôcť s týmto kódom, potrebujem tam pridať minimálne 5 vlákien kde napríklad prvých 100 prvocisel bude počítať jedno vlákno, dalších 100 prvočísel druhé vlákno, dalsich 100 prvočisel tretie vlákno... atď. Ďakujem za pomoc.


Kód:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

void *runner(void *param); /* the thread */

int main(int argc, char *argv[]) {

   //Verify two args were passed in
   if(argc < 2) {
      fprintf(stderr, "USAGE: ./prime.out <Integer value>\n");
      exit(1);
   }

   //verify the input is greater then or equal to two
   if(atoi(argv[1]) < 2) {
      fprintf(stderr, "USAGE: %d must be >= 2\n", atoi(argv[1]));
      exit(1);
   }

   pthread_t tid;       //Thread ID
   pthread_attr_t attr; //Set of thread attributes

   printf("Prime Numbers: ");

   //Get the default attributes
   pthread_attr_init(&attr);
   //Create the thread
   pthread_create(&tid,&attr,runner,argv[1]);
   //Wait for the thread to exit
   pthread_join(tid,NULL);
   printf("\nComplete\n");
}

//The thread will begin control in this function
void *runner(void *param) {
   int i,j,upper = atoi(param);
   /* Check to see if a number is prime */
   for(i = 2; i < upper; i++) {
   int trap = 0;
      /* Check each number for divisibility */
      for(j = 2; j < i; j++) {
         int result = i % j;
         /* If any of the numbers divide cleanly
             then this number is not prime. So
             stop checking. */
         if(result == 0) {
            trap = 1;
            break;
         }
      }
      //No numbers divided cleanly so this number must be prime
      if(trap == 0) {
         printf("[%d] ", i);
      }
   }
   //Exit the thread
   pthread_exit(0);
}


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 22.04.2014 17:10

1.) Čo ti bráni vytvoriť tých vlákien viac? Proste spravíš 5 krát pthread_t a zavoláš 5 krát pthread_create. Rozsah čísel, ktoré má vlákno spracovať, mu dáš ako dáta - nedáš mu len argv[1], ale trebárs štruktúru s dvomi číslami.

2.) Vo funkcií runner si máš dáta správne pretypovať. Kompiler C-čka to síce skompiluje, pretože to používaš ako pole bajtov, ale aj tak to nie je úplne dobre a ak tomu predáš štruktúru, to pretypovanie tam potrebovať budeš.

3.) Toto nie je úplne dobrý prístup k paralelizácií výpočtu prvočísel menších než N. Skôr sa hodí prístup, kedy beží cyklus do N a vlákna testujú jednolivé čísla len na to, či je to prvočíslo, alebo nie. Ani si nie som teraz istý, či ti tento algoritmus pôjde nejako normálne upraviť tak, aby testoval len nejaký interval. No veď skús, ale určite by som to prepísal a minimálne použil nejakú funkciu is_prime s nejakým krajším algoritmom na zistenie prvočíselnosti.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Odpovedať na tému [ Príspevkov: 2 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Pridanie programu do Firewallu

v Bezpečnosť a firewally

2

608

26.12.2008 2:40

Jaro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pridanie programu do kontextovej ponuky

v Operačné systémy Microsoft

1

348

17.11.2008 19:46

Gyrxiur Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pridanie suboru do programu a jeho pouzitie

v Technológia .NET

10

784

30.01.2011 14:22

dartanan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Tower Server - 16 jadier / 32 vlákien - do 1500€

v PC zostavy

8

533

29.04.2017 10:26

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Unix Benchmarks

v Operačné systémy Unix a Linux

3

1442

08.02.2014 10:25

polo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Najpouzivanejsi unix/linux

v Operačné systémy Unix a Linux

28

4946

08.01.2008 15:51

Wheeler Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. IBM UNIX AIX

v Operačné systémy Unix a Linux

5

761

06.06.2008 22:39

FERDA23 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. unix a C

v Assembler, C, C++, Pascal, Java

8

997

07.12.2008 21:34

Logik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vypis argumentov - Csh - UNIX

v Assembler, C, C++, Pascal, Java

0

649

07.10.2007 16:32

SAmo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Unix pre desktopy - DesktopBSD

v Operačné systémy Unix a Linux

10

1030

08.06.2006 0:26

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. hladame Support Specialist (Win, Unix)

v Ponuka práce

7

1042

05.12.2007 22:37

IT specialist Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. unix time na normalny cas

v PHP, ASP

1

735

10.03.2007 22:08

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. praca - linux alebo unix-like systemy

v Operačné systémy Unix a Linux

3

764

02.12.2008 18:14

jararak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladame Unix specialistov s plynulou Anglictinou

v Ponuka práce

0

418

03.05.2012 15:10

Rasto4 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladam niekoho na konzultacie javy a Unix

v Ponuka práce

1

869

09.01.2009 21:15

Skorpikon Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Stranky so zameranim na linux a unix

v Operačné systémy Unix a Linux

28

7537

06.09.2023 22:10

89Aquarius Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra