Springen naar inhoud

Proces of thread?


  • Log in om te kunnen reageren

#1

Mifen

    Mifen


  • 0 - 25 berichten
  • 18 berichten
  • Gebruiker

Geplaatst op 09 maart 2009 - 01:47

dag allemaal
ik zat te denken over de verschillen tussen proces en thread, ik denk tot dusver dat een proces uit één of meerdere threads bestaat, als ik een proces heb met meerderen threads, dan ben ik een multithreading programma aan het maken.

een thread is dus een deelprogramma van een applicatie, deze applicatie kan 1 of meerdere processen zijn, en elke proces kan verschillende van die deelprogramma's, verschillende thread dus, (misschien ook) tegelijkertijd uitvoeren.

kan iemand zo een voorbeeld geven van de toepassing, hoe proces, thread en multithreading in het programmeren worden toegepast.

ik zou het heel graag in een java applicatie toepassing zien, denk dus aan een opdracht, en ik zal proberen oplossing te vinden, als ik de oplossing heb, dan kan iemand adhv de oplossing die 3 dingen uitleggen

dank bij voorbaat
mvg
M.
Knowledge of self is the key to the knowledge of God.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 10 maart 2009 - 09:13

ik zat te denken over de verschillen tussen proces en thread, ik denk tot dusver dat een proces uit één of meerdere threads bestaat, als ik een proces heb met meerderen threads, dan ben ik een multithreading programma aan het maken.


Er is geen éénduidig antwoord te geven op dit soort vragen. Er zijn op zijn minst 4 implementaties te vinden van threads op de markt.

Er zijn systemen waar elke thread op zich een proces zal voorstellen. Dit heeft als voordeel dat de ene thread de andere niet kan blokkeren als deze crasht. Het nadeel is dat procescreatie vrij veel resources vraagt. Als je heel wat threads gebruikt kan het zelf best zijn dat je het maximum aantal threads overschrijdt.

Een ander systeem bestaat er dan uit om een x aantal threads samen te houden onder 1 proces, stel nu dat je 5 threads per proces bijhoudt, dan heb je 5 keer minder processen nodig dan in het vorige systeem. Echter, als 1 van deze 5 threads vastloopt hebben de andere 4 daar ook last van.

De andere systemen kan ik me niet direct herinneren, maar welk systeem gebruikt wordt hangt af van je OS. Er is bv een groot verschil tussen threads in windows en linux.

Een opdracht verzinnen om je aan te tonen wat een proces, thread en multithreading zijn kan ik toch niet zo direct bedenken.

Momenten waarop je threads gaat gebruikt zijn vooral momenten waarbij je bv enorm zware berekeningen doet en je de gebruiker om de 10s wil laten zien hoe ver die al gevorderd is. Dan kan je simpelweg een nieuwe thread creëeren die om de 10s het rekenproces zal onderbreken en de gebruiker zal verwitten, daarna gaat het rekenwerk simpelweg verder. Zonder threads is dit soort zaken bv onmogelijk.

#3

Mifen

    Mifen


  • 0 - 25 berichten
  • 18 berichten
  • Gebruiker

Geplaatst op 10 maart 2009 - 15:43

Bedankt
Ik schrijf een programma dat niets anders doet dan hallo Cycloon op scherm afbeeldt:
public class Main {
	
	public static void main(String[] args) {
		// TODO code application logic here
		System.out.println("Hallo Cycloon");
	}
}
En ik ga het uitvoeren.
Het is dus een programma: in het geheugen geladen in de vorm van instructies.
?> Is dat nu een proces of thread of een proces bestaande uit één thread?

Veranderd door Mifen, 10 maart 2009 - 15:44

Knowledge of self is the key to the knowledge of God.

#4

Mifen

    Mifen


  • 0 - 25 berichten
  • 18 berichten
  • Gebruiker

Geplaatst op 10 maart 2009 - 15:53

Een opdracht verzinnen om je aan te tonen wat een proces, thread en multithreading zijn kan ik toch niet zo direct bedenken.

Je bedoelt volgens mij de procesbeheer en hoe de threads beheerd worden, maar ik doel hier op de toepassing in een programmeertaal, als je een multithreading of threading vanuit een java applicatie implementeert, dan maakt toch niet uit wat je gebruikt als OS of wel?

Veranderd door Mifen, 10 maart 2009 - 15:54

Knowledge of self is the key to the knowledge of God.

#5

Mifen

    Mifen


  • 0 - 25 berichten
  • 18 berichten
  • Gebruiker

Geplaatst op 10 maart 2009 - 16:05

Momenten waarop je threads gaat gebruikt zijn vooral momenten waarbij je bv enorm zware berekeningen doet en je de gebruiker om de 10s wil laten zien hoe ver die al gevorderd is. Dan kan je simpelweg een nieuwe thread creëeren die om de 10s het rekenproces zal onderbreken en de gebruiker zal verwitten, daarna gaat het rekenwerk simpelweg verder. Zonder threads is dit soort zaken bv onmogelijk.

public class Main {

	public static void main(String[] args) {
		// TODO code application logic here
		int i = 0;
		while (0 == 0) {
			i++;
			if (i % 1000000 == 0) {
				System.out.println(""+i);
			}

		}
	}
}

:D
Knowledge of self is the key to the knowledge of God.

#6

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 10 maart 2009 - 16:37

Bedankt
Ik schrijf een programma dat niets anders doet dan hallo Cycloon op scherm afbeeldt:

public class Main {
	
	public static void main(String[] args) {
		// TODO code application logic here
		System.out.println("Hallo Cycloon");
	}
}
En ik ga het uitvoeren.
Het is dus een programma: in het geheugen geladen in de vorm van instructies.
?> Is dat nu een proces of thread of een proces bestaande uit één thread?


Het programma zelf is een proces, maar het gaat hier over java dus het is weeral een speciaal geval. Java code wordt uitgevoerd binnen de JVM waardoor dit proces eigenlijk niet echt "bestaat".

Je bedoelt volgens mij de procesbeheer en hoe de threads beheerd worden, maar ik doel hier op de toepassing in een programmeertaal, als je een multithreading of threading vanuit een java applicatie implementeert, dan maakt toch niet uit wat je gebruikt als OS of wel?


Natuurlijk moet je geen rekening houden met het OS dat gebruikt wordt. Je OS regelt die zaken zelf wel in de achtergrond, maar ik dacht dat je meer naar deze achtergrond op zoek was.


public class Main {

	public static void main(String[] args) {
		// TODO code application logic here
		int i = 0;
		while (0 == 0) {
			i++;
			if (i % 1000000 == 0) {
				System.out.println(""+i);
			}

		}
	}
}

:D


Deze code zal nooit om de 10 seconden update.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures