| | |
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Autor | Správa |
---|
Registrovaný: 22.04.14 Prihlásený: 25.05.14 Príspevky: 1 Témy: 1 |
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); }
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 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! |
|
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Pridanie programu do Firewallu v Bezpečnosť a firewally | 2 | 608 | 26.12.2008 2:40 Jaro | | Pridanie programu do kontextovej ponuky v Operačné systémy Microsoft | 1 | 348 | 17.11.2008 19:46 Gyrxiur | | pridanie suboru do programu a jeho pouzitie v Technológia .NET | 10 | 784 | 30.01.2011 14:22 dartanan | | Tower Server - 16 jadier / 32 vlákien - do 1500€ v PC zostavy | 8 | 533 | 29.04.2017 10:26 JanoF | | Unix Benchmarks v Operačné systémy Unix a Linux | 3 | 1442 | 08.02.2014 10:25 polo | | Najpouzivanejsi unix/linux v Operačné systémy Unix a Linux | 28 | 4946 | 08.01.2008 15:51 Wheeler | | IBM UNIX AIX v Operačné systémy Unix a Linux | 5 | 761 | 06.06.2008 22:39 FERDA23 | | unix a C v Assembler, C, C++, Pascal, Java | 8 | 997 | 07.12.2008 21:34 Logik | | Vypis argumentov - Csh - UNIX v Assembler, C, C++, Pascal, Java | 0 | 649 | 07.10.2007 16:32 SAmo | | Unix pre desktopy - DesktopBSD v Operačné systémy Unix a Linux | 10 | 1030 | 08.06.2006 0:26 JanoF | | hladame Support Specialist (Win, Unix) v Ponuka práce | 7 | 1042 | 05.12.2007 22:37 IT specialist | | unix time na normalny cas v PHP, ASP | 1 | 735 | 10.03.2007 22:08 p360t | | praca - linux alebo unix-like systemy v Operačné systémy Unix a Linux | 3 | 764 | 02.12.2008 18:14 jararak | | Hladame Unix specialistov s plynulou Anglictinou v Ponuka práce | 0 | 418 | 03.05.2012 15:10 Rasto4 | | Hladam niekoho na konzultacie javy a Unix v Ponuka práce | 1 | 869 | 09.01.2009 21:15 Skorpikon | | Stranky so zameranim na linux a unix v Operačné systémy Unix a Linux | 28 | 7537 | 06.09.2023 22:10 89Aquarius |
| 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
|
|