7
มีวิธีปฏิบัติที่เลิกใช้แล้วสำหรับการเขียนโปรแกรมมัลติเธรดและมัลติโปรเซสเซอร์ซึ่งฉันไม่ควรใช้อีกต่อไปหรือไม่?
ในวันแรก ๆ ของ FORTRAN และ BASIC โปรแกรมทั้งหมดถูกเขียนด้วยคำสั่ง GOTO ผลลัพธ์คือโค้ดสปาเก็ตตี้และวิธีแก้ปัญหาคือการเขียนโปรแกรมแบบมีโครงสร้าง ตัวชี้อาจมีลักษณะควบคุมได้ยากในโปรแกรมของเรา C ++ เริ่มต้นด้วยตัวชี้มากมาย แต่แนะนำให้ใช้การอ้างอิง ไลบรารี่อย่าง STL สามารถลดการพึ่งพาของเราได้บ้าง นอกจากนี้ยังมีสำนวนในการสร้างสมาร์ทพอยน์เตอร์ที่มีคุณสมบัติดีกว่าและ C ++ บางรุ่นจะอนุญาตให้อ้างอิงและจัดการโค้ด วิธีปฏิบัติในการเขียนโปรแกรมเช่นการสืบทอดและ polymorphism ใช้ตัวชี้จำนวนมากเบื้องหลัง ภาษาเช่น Java กำจัดพอยน์เตอร์และใช้การรวบรวมขยะเพื่อจัดการข้อมูลที่จัดสรรแบบไดนามิกแทนที่จะขึ้นอยู่กับโปรแกรมเมอร์เพื่อจับคู่คำสั่งใหม่และลบทั้งหมด ในการอ่านของฉันฉันได้เห็นตัวอย่างของการเขียนโปรแกรมแบบหลายกระบวนการและหลายเธรดที่ดูเหมือนจะไม่ใช้เซมาฟอร์ พวกเขาใช้สิ่งเดียวกันกับชื่อที่แตกต่างกันหรือพวกเขามีวิธีการใหม่ในการจัดโครงสร้างการปกป้องทรัพยากรจากการใช้งานพร้อมกันหรือไม่? ตัวอย่างเช่นตัวอย่างเฉพาะของระบบสำหรับการเขียนโปรแกรมมัลติเธรดที่มีตัวประมวลผลมัลติคอร์คือ OpenMP มันแสดงให้เห็นถึงภูมิภาคที่สำคัญดังต่อไปนี้โดยไม่ต้องใช้เซมาฟอร์ซึ่งดูเหมือนจะไม่รวมอยู่ในสภาพแวดล้อม th_id = omp_get_thread_num(); #pragma omp critical { cout << "Hello World from thread " << th_id << '\n'; …