Bazı veri üyelerine sahip bir sınıf tanımlayabilmek ve bu veri üyelerine özel olarak erişime sahip olan bir işlevi tanımlamak istiyorum.Aynı sınıfın işlevine sahip sınıf içi iş parçacığı oluşturma
Daha sonra, sınıfın veri üyeleri üzerinde çalışan bazı iş parçacıkları oluşturan genel bir işlev istiyorum. Kodumu derlemek için sorun yaşıyorum.
Muteks veya veri koruması konusunda endişelenmeyin, bu bir sorun olmayacaktır, çünkü bu yalnızca test için bazı örnek koddur.
class foo {
public:
void make_foo_func_threads();
private:
void foo_func();
char private_data;
std::vector<std::thread> some_threads;
}
void foo::foo_func() {
while(1) {
private_data = 'A';
}
}
void foo::make_foo_func_thread() {
for(...) some_threads.push_back(std::thread(foo_func));
for(...) some_threads.join();
}
derleyici bana hata veriyor:
'no matching call to std::thread::thread()'
Görünüşe göre orada 'dir void (foo::*&&)'
için <unresolved overloaded function type>
gelen argüman 1 için bilinen hiçbir dönüştürme.
Erm, evet, derleyiciden başka ne anlama geldiğini anlama konusunda hiçbir fikrim yok foo_func'un nasıl çözüleceğinin anlaşılmasında sorun var - sanırım.
Derleyiciye ne yapmaya çalıştığımı anlama konusunda nasıl yardımcı olabilirim, bu yüzden daha fazla hatayla beni rahatsız etmeyecek. Hiç şüphesiz, yazdığım kod yasal değildir ve eğer durum buysa, bunun neden böyle olduğunu açıklayabilir. Teşekkürler!
Tamam, bu harika! Bir problem olsa da, programım sonsuz bir döngü çalışıyor olsa da, ana sayfanın altından düşer. thread.join() iş parçacığı katılmak için bekliyor gibi görünmüyor! – user3728501
@EdwardBird, tüm programı yığılmış ya da benzer şekilde yığılmış ve bir bağlantı gönderebilir misiniz? Ya da daha iyisi, başkalarının katkılarını almak için başka bir soru gönderin (ve bu cevap, ve diğeri, gönderildiği gibi). – hmjd
Oops, benim kötüyüm ben f.make_foo_func_threads() koymadı; ana olarak! Bunun için üzgünüm, herkese DONT PANIC iyi çalışıyor! >. < – user3728501