Saya butuh pendapat. GCC selalu kompiler yang sangat baik, tetapi baru-baru ini kehilangan "banding". Saya baru saja menemukan bahwa pada Windows GCC tidak memiliki std::thread
dukungan, memaksa pengguna Windows untuk menggunakan kompiler lain karena fitur yang paling menarik masih hilang.
Tetapi mengapa GCC masih tidak memiliki dukungan utas di Windows? Masalah lisensi? Ketidakcocokan ABI? (Ya, sudah ada beberapa pustaka lintas platform menggunakan multithreading: boost, POCO, SDL, wxwidgets, dll. Tidakkah mudah untuk menggunakan yang sudah ada, dan MIT / libpng berlisensi, kode yang sesuai dengan lubang ini alih-alih mengirimkan rilis GCC tanpa dukungan utas?)
Baru-baru ini, melihat perbandingan kompiler, GCC memiliki dukungan terluas untuk fitur C ++ 11 sehubungan dengan kompiler lain, kecuali untuk fakta bahwa pada Windows ini tidak benar karena kami masih kekurangan atom, mutex, dan utas: /
Saya ingin tahu lebih banyak tentang topik ini, tetapi satu-satunya hal yang dapat saya temukan adalah orang-orang yang meminta bantuan karena:
"utas" tidak ada di namespace std
Melihat pelacakan tiket dan diskusi diskusi GCC / TDM-GCC, ada permintaan untuk dukungan utas sejak 2009. Mungkinkah setelah 4 tahun masih tidak ada solusi? Apa yang sebenarnya terjadi?
sumber
Jawaban:
Saya mengerti bahwa GCC tidak disukai karena orang-orang yang mempertahankannya menjadi agak sombong, dan sekarang LLVM ada di sini (dan sangat baik) orang-orang memilih dengan kaki.
Slashdot berdiskusi tentang dukungan baru LLVM untuk C ++ 11 . _merlin mengatakan:
yang berbunyi dengan pengamatan Anda tentang penundaan 4 tahun.
sumber
std::thread
Windows yang didukung dalam VS2012 EE)thread_local
variabel)Popularitas dan kegunaan GCC tidak dipertanyakan.
Namun pertimbangan penting adalah Lisensi.
Pertimbangan penting lainnya
Dari http://clang.llvm.org/comparison.html#gcc
Dari http://www.linuxquestions.org/questions/slackware-14/gcc-vs-llvm-931034/
dihubungkan dan digunakan misalnya untuk membuat alat analisis kode statis, yang menjadi semakin penting ()
Dari http://clang.debian.net/
sumber
-ftrack-macro-expansion
, sekarang diaktifkan secara default :)foo
danmoo
adalah penunjuk ke tipe struktur yang berbeda, keduanya memiliki bidangbar
sebagai bagian dari urutan awal mereka, menulis*&foo->bar
dan membaca*&moo->bar
harus menghasilkan pembacaan melihat penulisan, karena satu-satunya jenis efektif yang digunakan dalam akses baik adalah jenisbar
. GCC, bagaimanapun, tampaknya menyaring*&
dan dengan demikian meresap jenisfoo
danmoo
...Alasan mengapa dibutuhkan banyak waktu adalah karena dibutuhkan banyak pekerjaan untuk mendapatkan dasar yang kuat untuk membangun header di atas. Cara mingw-w64 tampaknya bo adalah membangun pustaka seperti pthreads pada Windows. Ada sedikit kekasaran hulu dari itu daripada memperkenalkan ketergantungan pada threading asli Windows API.
mingw-w64 mengimplementasikan
<thread>
dan header C ++ 11 lainnya di ataswinpthreads
perpustakaan mereka sendiri . Ini harus tersedia untuk pengujian dalam distribusi Mingw-builds dan rubenvb tentang toolchain mingw-w64. Saya akan merekomendasikan mengikuti milis mingw-w64 jika Anda ingin melacak di mana sebagian besar pekerjaan pada pekerjaan Windows GCC asli dilakukan.Proyek Qt memiliki halaman wiki yang merinci rekomendasi mereka saat ini dan pandangan yang lebih luas dari toolchain GCC di windows, lihat halaman wiki Proyek Qt ini .
sumber