bir iş parçacığının başlat işlevine basit bir tamsayı getirin Kod örneğidir, yapmam gereken şey değiştirmek.Bir iş parçacığı oluşturma işlevine
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *my_function (void*); // Function for the thread
int main()
{
pthread_t my_thread ; // Declare a thread identifier
int rc1, x = 7;
// Create my_thread
if ((rc1 = pthread_create (& my_thread, NULL, & my_function, (void*) &x)))
{
printf ("Error in creating thread %d\n", rc1);
}
pthread_join (my_thread, NULL); // wait for thread to exit
return (0); // exit the main function
}
// The my_thread is created with my_function() which accepts an argument
void *my_function(void* arg)
{
int i = *(int*)arg;
printf ("The argument which this thread received is %d \n", i) ;
pthread_exit (NULL) ; // thread exits
}
soru şudur: iplik oluşturma anda parçacığının start fonksiyonu için basit tamsayı geçirin. Ama basit bir tamsayı bir iş parçacığının başlatma işlevine nasıl geçireceğimi bilmiyorum ve ayrıca iş parçacığı oluşturma süresinin ne olduğunu bilmiyorum. senin Yapılanma Modeli (çoğu do) intptr_t
varsa
Konu Açma zamanıdır. Bu isim sizi şaşırtabilir, ama sizde var. Şu anda, bir tamsayıyı doğrudan bir tam sayı geçirmekten biraz daha temiz olan iş parçacığına bir tamsayıya geçiriyorsunuz. – EOF
@EOF Bir "int" kelimesini atıfta bulunulduğu gibi, daha temiz bir sorundur, bu, 'pthread_create' çağrısının, güvenli olduğu kadar yeni ileti dizisinden bazı iletiler alınana kadar geçirilen değişkenin değerini korumak zorunda olduğu anlamına gelir. ya değeri değiştirin ya da değişkeni yok edin. Örneğin, her bir iş parçacığının "id" - "0" ile "N - 1" değerini geçtiği "N" iş parçacığı başlayan bir "for" döngüsü. –