จากตัวประมวลผล 1970 ถึงประมาณ 2002 เพิ่มความเร็วเป็นสองเท่าในทุก ๆ 18 เดือน ดังนั้นในฐานะโปรแกรมเมอร์สิ่งที่คุณต้องทำคือรอและโปรแกรมของคุณจะทำงานได้เร็วขึ้น ปัญหาคือว่าประมาณ 2002 กฎการเปลี่ยนแปลง ตอนนี้พวกเขาไม่ได้สร้างตัวประมวลผลที่เร็วกว่าที่ใหญ่กว่าพวกเขากำลังสร้างตัวประมวลผลที่ช้ากว่าเล็กลง คอมพิวเตอร์ที่ฉันใช้งานอยู่ในขณะนี้มี 4 คอร์และชิปที่มีมากถึง 8 คอร์ (และ 4 เธรดต่อคอร์) ในไม่ช้าเราก็จะมีชิปที่มีคอร์มากขึ้น
ดังนั้นหากคุณเขียนโปรแกรมที่ไม่ได้เกิดขึ้นพร้อมกันคุณจะพบว่าคุณกำลังใช้ 1 คอร์หรือเธรด แต่ส่วนที่เหลือของ CPU กำลังนั่งอยู่ที่นั่นโดยไม่ทำอะไรเลย ดังนั้นถ้าคุณมี 16 คอร์ 1 จะใช้งานโปรแกรมของคุณและอีก 15 คอร์กำลังนั่งอยู่ที่นั่น!
ปัญหาที่เกิดขึ้นพร้อมกันคือมันไม่ได้กำหนดไว้ ซึ่งก็คือการบอกว่าคุณไม่ทราบว่าสิ่งที่เรียงลำดับกระทู้ที่แตกต่างกันจะทำสิ่งต่าง ๆ โดยปกติแล้วโปรแกรมเมอร์ได้พยายามที่จะแก้ปัญหานี้โดยใช้ล็อคและไม่ชอบ นี้มีนำไปสู่มากของความเจ็บปวด การมีสถานะที่ไม่แน่นอนบางรูปแบบที่มากกว่าหนึ่งเธรดสามารถเข้าถึงได้อย่างอิสระมักจะเป็นสูตรสำหรับความเจ็บปวดและ heisnebugs!
แนวโน้มที่จะเกิดขึ้นก็คือการย้ายไปยังภาษาที่ใช้งานได้ซึ่งควบคุมสถานะที่ไม่แน่นอนได้อย่างแน่นหนา มีวิธีการพื้นฐานสองวิธีที่ภาษาการใช้งานจะจัดการพร้อมกัน ที่แรกก็คือการใช้ข้อความผ่าน Erlang นี้แสดงได้ดีที่สุด ใน Erlang นั้นโดยทั่วไปไม่มีสถานะที่ใช้ร่วมกันระหว่างกระบวนการ พวกเขาสื่อสารไม่ได้ด้วยการแบ่งปันความทรงจำ แต่ผ่านข้อความของฉัน นี่ควรสมเหตุสมผลกับคุณในขณะที่เรากำลังทำอยู่ ฉันกำลังส่งข้อมูลนี้ให้กับคุณโดยส่งข้อความถึงคุณไม่ใช่โดยการจดจำจากสมองของฉัน! โดยการเปลี่ยนไปใช้ข้อความที่ส่งผ่านข้อผิดพลาดการล็อกส่วนใหญ่ก็หายไป นอกจากนี้ข้อความที่สามารถส่งผ่านเครือข่ายเช่นเดียวกับภายในหนึ่งโหนด
วิธีอื่นคือ STM ซึ่งย่อมาจาก Software Transcriptional Memory ซึ่งมีอยู่ใน clojure และ Haskell (และอื่น ๆ ) ในหน่วยความจำ STM มีการแชร์ แต่การเปลี่ยนแปลงสามารถทำได้ผ่านการทำธุรกรรมเท่านั้น ในขณะที่ฐานข้อมูลผู้ใช้ค้นพบสิ่งเหล่านี้ทั้งหมดในปี 1970 มันค่อนข้างง่ายที่จะตรวจสอบให้แน่ใจว่าเราทำให้ถูกต้อง
ที่จริงฉันเข้าใจง่ายกว่าเล็กน้อย Clojure และ Haskell สามารถส่งข้อความได้และ Erlang สามารถทำ STM ได้
ข้อจำกัดความรับผิดชอบฉันเป็นผู้เขียนโปรแกรมเว็บเซอร์วิสร่วมกับ Erlangซึ่งจะเปิดตัวในช่วงต้นของการเปิดตัวในอีกไม่กี่สัปดาห์ข้างหน้า