คำถามติดแท็ก data-race

4
"การแข่งขันข้อมูล" และ "สภาพการแข่งขัน" เป็นสิ่งเดียวกันในบริบทของการเขียนโปรแกรมพร้อมกัน
ฉันมักจะพบว่ามีการใช้คำเหล่านี้ในบริบทของการเขียนโปรแกรมพร้อมกัน เหมือนกันหรือต่างกัน?

3
โปรแกรมมัลติเธรดติดอยู่ในโหมดปรับให้เหมาะสม แต่จะทำงานตามปกติใน -O0
ฉันเขียนโปรแกรมหลายเธรดแบบง่าย ๆ ดังนี้: static bool finished = false; int func() { size_t i = 0; while (!finished) ++i; return i; } int main() { auto result=std::async(std::launch::async, func); std::this_thread::sleep_for(std::chrono::seconds(1)); finished=true; std::cout<<"result ="<<result.get(); std::cout<<"\nmain thread id="<<std::this_thread::get_id()<<std::endl; } มันทำงานตามปกติในโหมดดีบั๊กในVisual Studioหรือ-O0ในgc c และพิมพ์ผลหลังจากนั้นไม่1กี่วินาที แต่มันติดอยู่และไม่ได้พิมพ์อะไรในรีลีส-O1 -O2 -O3หรือโหมด

2
โค้ดตัวอย่างของ IBM ฟังก์ชั่นที่ไม่ใช่ผู้เข้าร่วมใหม่ไม่ทำงานในระบบของฉัน
ฉันกำลังศึกษาเรื่องการเขียนโปรแกรมอีกครั้ง บนเว็บไซต์ของ IBM (อันนี้ดีจริงๆ) ฉันได้ก่อตั้งรหัสแล้วคัดลอกด้านล่าง มันเป็นรหัสแรกที่นำมาลงเว็บไซต์ รหัสพยายามแสดงปัญหาที่เกี่ยวข้องกับการเข้าถึงตัวแปรในการพัฒนาเชิงเส้นของโปรแกรมข้อความ (asynchronicity) โดยการพิมพ์ค่าสองค่าที่เปลี่ยนแปลงตลอดเวลาใน "บริบทอันตราย" #include <signal.h> #include <stdio.h> struct two_int { int a, b; } data; void signal_handler(int signum){ printf ("%d, %d\n", data.a, data.b); alarm (1); } int main (void){ static struct two_int zeros = { 0, 0 }, ones = { 1, 1 …
11 c  gcc  signals  x86-64  data-race 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.