'dan dişli işlevine birden çok argüman iletmek bu benim C'de iş parçacığı oluşturma ilk denememdir. Dairesel olarak sınırlanmış bir arabellek oluşturuyorum. İşte pthread_create
void bufferRead(BoundedBuffer* buffer, char* data, int count) {
pthread_mutex_lock(&buffer->mutexBuffer);
<snip>
pthread_mutex_unlock(&buffer->mutexBuffer);
}
benim pthread_create geçerli: burada gösterildiği gibi, ben parçacığı oluşturmak için biliyorum, ancak tüm örnekler Bir boşluk parametresini kabul yalnızca dişli olan fonksiyonları gördük, ama ne yazık ki işçinin şartname üç kullanmamı istiyor ifadesi
pthread_create(&buffer.readThread, NULL, (void *)bufferRead, &readParams)
Ve readParams yapı/b geçtikten sonra
struct readThreadParams {
BoundedBuffer b;
char* data;
int count;
};
struct readThreadParams readParams;
readParams.b = buffer2;
readParams.data = out_array;
readParams.count = in_size;
yapı her parametresi atamak konusunda herhangi tavsiyelerde ödevi ufferRead işlevi büyük ölçüde takdir edilecektir.
-1 Bir yerel değişken başka bir iş parçacığına geçiriliyorsa, ana bir yerel değişken ise sorun değil. Ana programdan çıkarsanız, programınız yine de sona erer, böylece programınız çalışırken değişken her zaman var olur. –
'a iletme – jcoder
@jcoder 'main' bırakmak, programın sonlandırılması anlamına gelmez. İnter-thread iletişimi için otomatik (non-yığın, non-statik) değişken, en iyi ihtimalle şüpheli bir fikirdir. –