Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Osnove programa koji ima multitasking?

[es] :: C/C++ programiranje :: Osnove programa koji ima multitasking?

Strane: 1 2

[ Pregleda: 5411 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Osnove programa koji ima multitasking?30.08.2002. u 14:03 - pre 262 meseci
Dakle, kako servisi, recimo Apache, postizu to da rade istovremeno sa vise klijenata?
Treba mi samo osnovno objasnjenje, da bi znao na sta da se fokusiram?
Moze i neki link...
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16681
*.telemaxx.net



+7166 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 14:39 - pre 262 meseci
multithreading
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 14:46 - pre 262 meseci
Jel' bi ono trebao da bude link, ili keyword za search? :)
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16681
*.telemaxx.net



+7166 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 14:58 - pre 262 meseci
Keyword za search -- mislim da sam pisao o tome nekada davno na C/C++ forumu, mozes i da pogledas....

Thread (nit) je deo programa koji se paralelno izvrsava sa ostatkom. Kada se startuje program to je "glavna nit" (main thread) a ti mozes kreirati druge iz nje.

Evo ti glup kod koji ti objasnjava osnovni princip:

Code:

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

void nit1()
{
    do {
        printf("Pozdrav iz niti 1\n");
        Sleep(300);
    } while(1);

}

void nit2()
{
    do {
        printf("Pozdrav iz niti 2\n");
        Sleep(300);
    } while(1);

}


void nit3()
{
    do {
        printf("Pozdrav iz niti 3\n");
        Sleep(300);
    } while(1);

}


void main()
{

    DWORD dwTID1, dwTID2, dwTID3;
    HANDLE trd1, trd2, trd3;
    
    trd1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)nit1, 0, 0, &dwTID1);
    trd2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)nit2, 0, 0, &dwTID2);
    trd3 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)nit3, 0, 0, &dwTID3);

    do {
        printf("Pozdrav iz glavne niti\n");
        Sleep(300);
    } while(1);

}



DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Prikačeni fajlovi
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16681
*.telemaxx.net



+7166 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 15:03 - pre 262 meseci
Kod socketa (TCP/IP) je fora da ti "slusas" neki port, zatim dobijes zahtev - uspostavis socket vezu a onda procesiras komunikaciju sa tim klijentom preko posebne niti (thread) - ima dosta lepog koda koji ti objasnjava kako funkcionise client/server socket komunikacija u multithreading okruzenjima.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 17:37 - pre 262 meseci
Najtoplije ti preporučujem da (bar za početak) ne radiš direktno sa nitima, već da koristiš neku threadpool klasu, jer će to jako da ti olakša život. Recimo, ima jedna takva koja radi i sa Windows-om i sa Linux-om na

http://www.codeproject.com/threads/threads.asp

Mogu ti reći da su bagovi vezani za višenitno programiranje (posebno race conditions) nešto najgore sa čime sam se sreo u svojoj dosadašnjoj programerskoj karijeri.

Uzgred, Ivane, znam da je onaj gornji primer bio samo "na brzaka", ali da upozorim ljude da za kreiranje niti pod Windows-ima koriste _beginthreadex funkciju, a ne CreateThread (osim ako se pravi program bez CRT-a). Ko želi više detalja o ovome, neka pogleda

http://www.microsoft.com/msj/d...m&nav=/msj/0799/newnav.htm
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16681
*.telemaxx.net



+7166 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 17:48 - pre 262 meseci
Jao da... zaboravih da sam koristio printf() , eto to je jedan bag koji bi mogao u necemu komplikovanijem da napravi frku ...

Slazem se sa Tatom - bagovi koji nastaju u multithreading aplikacijama su stvarno gadni i vrlo teski za lociranje i otklanjanje - zato treba pazljivo planirati delove aplikacije koje se izvrsavaju paralelno.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Prikačeni fajlovi
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 19:17 - pre 262 meseci
A na Linuxu, da li CreateThread postoji?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 19:21 - pre 262 meseci
Linux koristi POSIX threads. Pogledaj

http://dis.cs.umass.edu/~wagner/threads_html/tutorial.html


 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 19:35 - pre 262 meseci
Naravno da ne postoji Peco... CreateThread je Micro$oft izmisljotina, kao i mnogo drugih stvari.
Citat:
Predrag Damnjanovic:
A na Linuxu, da li CreateThread postoji?


Moj savet, znaci MOJ savet (tako da drugi nemaju sta da komentarisu ovo), za tebe je da koristis POSIX niti koje verovao ili ne rade fantasticno na Windows-u takodje. Imas gotove DLL-ove (trazi +posix +threads +win32 na google), a takodje mozes da skines source i iskompajliras.

Na Linux-u postoji sijaset alternativa za POSIX threads, ali narod normalno koristi POSIX stvari jer to je STANDARD.

E sad poslastica - zove se GNU Pth, POSIX threads bazirana biblioteka, visoko portabilna biblioteka za niti koja dolazi ravno iz GNU borbenih redova... URL: http://www.gnu.org/software/pth/pth.html . Skines lepo source i u demo (ili test) direktorijumu imas gotov web server recimo :) . Bolji primer za koriscenje niti neces naci veruj mi.

Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 19:46 - pre 262 meseci
Ih, bre Leko, što se odmah brecaš? Pa i ja sam mu savetovao da koristi POSIX. Mada, kada bih radio neki OS-nezavisni program sa nitima, pre bih koristio Boost.threads, ali to je C++, a Peca čini mi se više voli C.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 19:57 - pre 262 meseci
NemaNJO :)
Mah, nisam se brecao bre, samo ne volim da se ljudi nadovezuju na nesto sto je individualno misljenje. :)

Pricali smo o Boost-u ja mislim ovde... Jesi li probao CommonC++ ? Ovaj novi pogotovo?
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 20:11 - pre 262 meseci
Nisam probao CommonC++, mada sam čuo za njega.

Nego, gledam malo onu dokumentaciju za pth, i koliko ja razumem, to su user-mode niti koje ne omogućavaju iskorišćenje više procesora. Doduše, ne verujem da Peca ima višeprocesorsku mašinu, ali u principu više volim da se oslanjam na kernel niti (tako su uradili i sa Apache 2).
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 21:48 - pre 262 meseci
Ma kak'e biblioteke, ja volim direktnu komunikaciju sa kernelom :)

Code:

#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

void *first_thread(void *arg)
{
    int i;
    for (i=0; i<100; i++)
    {
        printf("Prvi thread\n");
        sleep(1);
    }
}


void *second_thread(void *arg)
{
    int i;
    for (i=0; i<100; i++)
    {
        printf("Drugi thread\n");
        sleep(1);
    }
}


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

    pthread_t thread1;
    pthread_t thread2;

    pthread_create(&thread1, NULL, first_thread, (void*)NULL);
    pthread_create(&thread2, NULL, second_thread, (void*)NULL);

    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);

    return 0;
}


Nego, da li je pthread samo Linux specific, ili radi na svim Unix-ima?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 21:54 - pre 262 meseci
Pthreads radi na većini modernih Unix-a, ali ako voliš direktnu komunikaciju sa kernelom, a mrziš biblioteke, onda batali i pthreads i koristi clone().
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Osnove programa koji ima multitasking?30.08.2002. u 21:59 - pre 262 meseci
Sto se tice kernel niti, ne treba da podsecam da Linux ima kernel threads ... pa ko voli, nek izvoli, ali onda ta aplikacija nece biti portabilna tako lako (mora da se pise kod za svaku platformu zasebno)...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.microsoft.com



+18 Profil

icon Re: Osnove programa koji ima multitasking?31.08.2002. u 01:37 - pre 262 meseci
Citat:
Ivan Dimkovic:
Jao da... zaboravih da sam koristio printf() , eto to je jedan bag koji bi mogao u necemu komplikovanijem da napravi frku ...


printf je threadsafe, ne bi trebao da pravi probleme. Zasto si to rekao?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-1.dialup.nethere.net



+6 Profil

icon Re: Osnove programa koji ima multitasking?31.08.2002. u 03:17 - pre 262 meseci
printf je threadsafe, pod uslovom da se koristi MT verzija CRT-a. Ako se niti kreiraju sa _beginthreadex, kompajler će da prijavi grešku ako se koristi ST verzija, a ako se kreiraju sa CreateThread onda će lepo da se kompajlira, ali će biri runtime belaja.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16681
*.mcbone.net



+7166 Profil

icon Re: Osnove programa koji ima multitasking?31.08.2002. u 10:30 - pre 262 meseci
Iz licnog iskustva - mislim da sam jednom napravio ovu istu gresku u velikom projektu, i onda sam izgubio 3-4 dana pitajuci se zasto program iz svih mogucih i nemogucih razloga generise raznorazne abnormalne greske!!

Svakako i ja preporucujem POSIX :)

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Osnove programa koji ima multitasking?31.08.2002. u 16:01 - pre 262 meseci
Moze li neko da mi objasni zasto ce printf da pravi greske?
Da li ce se to desiti i u linuxu sa pthread-om?
Koliko sam shvatio, i na Windowsu nece biti problema ako koristim _beginthreadex ?

P.S. Oduvek sam se pitao sta znace skracenice CRT, MT, i ST.
Moze neko da mi kaze sta te skracenice znace?
 
Odgovor na temu

[es] :: C/C++ programiranje :: Osnove programa koji ima multitasking?

Strane: 1 2

[ Pregleda: 5411 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.