![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Forking i flertrådade program | skyrulz | UNIX för avancerade & Expertanvändare | 0 | 04-22-2009 02:57 |
| köra kommandot flertrådade util utan programmering | umen | Shell-programmering och Skript | 0 | 12-07-2008 06:01 |
| Har du problem med att skriva en grundläggande tanken program | SeanWuzHere | Shell-programmering och Skript | 3 | 11-30-2006 01:41 |
| grundläggande matematiska program 4 barn | perleo | High Level Programming | 9 | 10-22-2002 04:51 |
| Få errno i en flertrådade program | S. Vishwanath | High Level Programming | 2 | 03-25-2002 09:58 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Grundläggande flertrådade program
Jag skulle vilja skriva ett program (jag är flexibel på språk, C / C + + var min ursprungliga idé, men ett skriptspråk som sannolikt skulle vara bättre) som löper hundratals program, men bara N \u003d 4 (exempelvis) i taget. Tanken är att hålla alla kärnor på en Flerledarkablar maskin upptagen.
Hur kan jag göra detta? Framför allt vill jag ett bibliotek samtal jag kan göra på något lämpligt språk som kan
|
|
||||
|
Programmet kommer att läsas i en textfil med en massa siffror, göra lite bearbetning på dem och sedan skapa en matris som bygger på dessa siffror. Varje del av kedjan kommer att passera genom en funktion som kommer att skapa en lämplig uppsättning data för den posten. Uppgifterna kommer att användas för att skapa en temporär fil och en kommandorad argument använder den filen.
Jag trodde inte att detta var relevant innan så jag inte nämnde det. I grund och botten programmet innebär ett visst arbete och kommer med en lista med kommandon för att köra. Citat:
Citat:
Detta ett jag arbetar med inte, men jag vill ha en metod som kan skicka inmatning eftersom andra liknande program jag skriver kommer antagligen behöva göra detta. ----- Post Update ----- Jag har just ändrat min OS för 64-bitars Ubuntu 9.04. Programmen är processor-intensiva 64-bitars program med små och medelstora minne fotspår. |
|
|||||
|
Citat:
|
|
||||
|
Citat:
Så istället skriver jag ett program för att hitta den mest effektiva lösningen för varje del, beräkna dess sannolika runtime, lösa en ungefärlig bin-förpackning problem, och tidsplan var över en användarprogrammerade avstämbar antal processorer. |
|
|||||
|
OK, från vad du har lagt upp "tills nu, den grundläggande strukturen skulle vara ungefär så här (pseudo-kod)
Kod:
Read numbers from file
Process them
Create output files
Create array of commands to run
Total processes=0
While there are commands left
pop a command from the stack
fork() a subprocess
In the child
system() the command
In the parent
Total processes++
If total processes >= 4
wait() until any process returns
Alternativt kan du köra exec () programmet själv, för att minska gaffelgrepp ränta, men jag är inte säker på hur bra detta skulle fungera. Plus, med shed_setaffinity Du kan ställa in affinitet av de processer (direkt det som CPU att använda), men du har för att spåra vilken CPU den sista processen används. Alla som har mer erfarenhet av algoritmer har en bättre idé? |
![]() |
| Komihåglista |
| Taggar |
| Flerledarkablar, trådning |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|