Men bu yerda ip-xavfsiz singleton naqshlari haqida o'qidim:
http://en.wikipedia.org/wiki/Singleton_pattern#C.2B.2B_.28using_pthreads.29
Va pastki qismida aytilishicha, yagona xavfsiz yo'l pthread_once dan foydalanishdir - bu Windowsda mavjud emas.
Bu ipni xavfsiz ishga tushirishni kafolatlashning yagona usulimi?
Men ushbu mavzuni SO da o'qidim:
C++ da singletonning xavfsiz dangasa qurilishi
Va Windows-da o'ylaymanki, atom OS darajasidagi almashtirish va taqqoslash funktsiyasiga ishora qiladi:
http://msdn.microsoft.com/en-us/library/ms683568.aspx
Bu men xohlagan narsani qila oladimi?
Tahrirlash: Men dangasa ishga tushirishni xohlayman va sinfning faqat bitta nusxasi bo'lishini xohlayman.
Boshqa saytdagi kimdir nomlar maydoni ichida global foydalanishni aytib o'tdi (va u singlni anti-naqsh deb ta'riflagan) - qanday qilib u "anti-naqsh" bo'lishi mumkin?
Qabul qilingan javob:
Men qabul qildim Joshning javobi Men Visual Studio 2008 dan foydalanayotganim uchun - Eslatma: Kelajakdagi o'quvchilar uchun, agar siz ushbu kompilyatordan (yoki 2005) foydalanmasangiz - Qabul qilingan javobdan foydalanmang !!
Tahrirlash: Kod qaytish bayonotidan tashqari yaxshi ishlaydi - xatoga yo'l qo'ydim: C2440 xatosi: 'qaytish' : 'uchuvchi Singleton *'dan 'Singleton *'ga aylantirib bo'lmaydi. Qaytish qiymatini o'zgaruvchan Singleton * qilib o'zgartirishim kerakmi?
Tahrirlash: Const_cast‹> oʻzgaruvchan kvalifikatsiyani olib tashlaydi. Joshga yana bir bor rahmat.