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

pthreads


swcratis

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

Δημοσ.

Καλισπερα,εχω μια συναρτηση με 4 ορισματα και θελω να δημιουργησω 5 νηματα που να την εκτελουν.Εφτιαξα μια δομη με μελη αυτα τα 4 ορισματα.Επισης εφτιαξα και μια συναρτηση void *thread_function(void *arg) που ο δεικτης arg θα ειναι τυπου της δομης των οριματων που εχω φτιαξει.

>
struct arguments {
   int ns;
   struct something *s1;
   struct list *s2;
   int thread_id;
                  };

void *thread_function( void *arg )
{
struct arguments *data;
int n,threadid;
struct something *k1;
struct list *k2;
data=(struct arguments *) arg;

         n=data->ns;
         threadid=data->thread_id;
k1=data->s1;
k2=data->s2;
select_option(ns,s1,s2,threadid);
pthread_exit(NULL);

}	

 

Η select_option ειναι η συναρτηση που θελω να εκτελουν τα νηματα και σκεφτηκα να την καλω μεσα στην συναρτηση thread_function που ειναι λαθος προφανως.:cry:

 

>
for(t=0; t<NUM_THREADS; t++)               //to id tou thread einai to t
		{
                printf("Creating thread %d\n", t);
			   
                rc = pthread_create(&threads[t],&attr, thread_function,(void *)& arg[t]);
                if (rc)
                {
                       printf("ERROR; return code from pthread_create() is %d\n", rc);
                       exit(-1);
                }

 

Αυτα ειναι κομματια κωδικα που γραφω στον server,γιατι πρεπει να φτιαξω server/client προγραμμα οπου καθε νημα να δημιουργειται για καθε client που συνδεεται σε C.Οποιος μπορει ας με βοηθησει!!!

Δημοσ.

Αρχικά την "pthread_create" θα πρέπει να την καλείς μετά από κάθε επιτυχημένη σύνδεση με κάθε client και όχι σε μία "for loop", που προφανώς το κάνεις αρχικά αν δεν κάνω λάθος.

Δημοσ.
Αρχικά την "pthread_create" θα πρέπει να την καλείς μετά από κάθε επιτυχημένη σύνδεση με κάθε client και όχι σε μία "for loop", που προφανώς το κάνεις αρχικά αν δεν κάνω λάθος.

 

Ναι αλλα ετσι καθε φορα που συνδεεται ενας Client δημιουργει παντα το νημα με threadid=0....Εγω πρεπει να αυξανω το id?

Δημοσ.

Αφού το threadid το φυλάς στον πίνακα threads[]. Άρα το μόνο που πρέπει να κάνεις αυξάνεις είναι το index του πίνακα κάθε φορά, με την προυπόθεση όμως ότι έχεις δεσμέυσει την απαραίτητη μνήμη ή ο πίνακας σου έχει διαθέσιμες θέσεις.

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

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

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