Προς το περιεχόμενο

Νήματα


delfini69

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

Θα ήθελα μια βοήθεια όσον αφορά τα νήματα...

Αν κάποιος μπορεί να παραθέσει τη ιδέα της χρήσης των νημάτων και γενικά την λειτουργία τους μέσα στο πρόγραμμα...

 

Ευχαριστώ

Δημοσ.

Δεν είμαι ειδικός, αλλά εχω ασχοληθεί σε κάποιο βαθμό με αυτά. Πρόκειται για ανεξάρτητες διεργασίες (μπορείς να τα πείς και προγράμματα) οι οποίες εκτελούνται ταυτόχρονα με την εκτέλεση του προγράμματος στο οποίο δημιουργήθηκαν. Το βασικό ρόλο στην εκτέλεση των νημάτων παίζει το λειτουρικό σύστημα, και κάποιες φορές η γλώσσα προγραμματισμού σε συνδιασμό με πλήθος των επεξεργαστών του συστήματος. Το τι ακριβώς και πως θα το κάνουν ορίζεται εξ' ολοκλήρου από τον προγραμματιστή. Το αν θα χρησιμοποιηθούν νήματα σε μια εφαρμογή έχει να κάνει με τον σχεδιασμό και τις απαιτήσεις τη εφαρμογής.

Δημοσ.

@pinball_elf: μπέρδεψες την fork με τα threads.

 

Ένα thread είναι ένα task (ή work instance) που εκτελείται μέσα σε μία διεργασία. Μία διεργασία μπορεί να έχει πολλά threads που εκτελούνται ταυτόχρονα και ένα thread ανήκει σε μία και μόνο διεργασία.

Δημοσ.

Μια βασική διαφορά με τις διεργασίες είναι τα νήματα μοιράζονται τo ίδιο πεδίο μνήμης και τα ίδια αρχεία.Έχουν δικό τους όμως stack.

Δημοσ.

Έχω την εντύπωση πως δεν είπα κατι διαφορετικό από αυτό που λέει ο dop, απλά μάλλον χρησιμοιποίησα λάθος όνομα για τα threads: διεργασίες. Πάντως σε real time λειτουργικά συστήματα, π.χ.: VxWorks τα threads εκτελούνται ως διαφορετικές διεργασίες.

Δημοσ.

Process = διεργασία, thread = νήμα... Είναι απλά διαφορετικά. Αν θέλεις να πεις το νήμα σώνει και καλά διεργασία, τότε μπορείς να το πεις light-weight process.

 

Και από όσο βλέπω, το VxWorks έχει μόνον νήματα (που τα ονομάζει tasks).

Δημοσ.

Ευχαριστω για τις απαντήσεις, κατι ακόμα: τα κρίσιμα κομμάτια του κώδικα μπορούμε να τα αποκλείσουμε με το mutex των νημάτων ή θα χρειαστώ σημαφόρους για τον αποκλεισμό τους....;;;;;;;

Δημοσ.

Αλλη δουλειά κάνει η Mutex άλλη η Semaphore. Η Mutex αποκλείει την πρόσβαση και όλοι περιμένουν να "ελευθερωθεί" προτού προχωρήσει η εκτέλεση. Η Semaphore έχει και έναν μετρητή κ.ο.κ.

 

Εάν σε ενδιαφέρει η προστασία να υπάρχει εσωτερικά σε μια διεργασία, γιατί να μην χρησιμοποιήσεις μια Critical Section που και πιο γρήγορη είναι και λιγότερους πόρους καταναλώνει;

Δημοσ.

@pinball_elf: δεν τσακώνεται κανείς. Δεν είναι το δικό μου vs το δικό σου. Απλά έχει επικρατήσει να λέγονται έτσι και αν τα μπλέκεις, μπλέκεις και τον συνομιλητή σου.

 

@delfini69: semaphores και mutexes κάνουν ακριβώς την ίδια δουλειά. Χρησιμοποιούνται για να περιορίσεις με ασφάλεια την πρόσβαση σε κοινούς πόρους. Προσωπικά χρησιμοποιώ mutexes καθώς είναι μια πιο απλή (λογικά) λειτουργία και πιθανώς να είναι πιο γρήγορο σε σχέση με ένα semaphore. Κοίτα για pthread_mutex_t κλπ

 

@GCMH: την ίδια δουλειά με διαφορετικό τρόπο κάνουν. Τι ακριβώς εννοείς "Εάν σε ενδιαφέρει η προστασία να υπάρχει εσωτερικά σε μια διεργασία, γιατί να μην χρησιμοποιήσεις μια Critical Section που και πιο γρήγορη είναι και λιγότερους πόρους καταναλώνει;"

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...