คำถามติดแท็ก locks

5
spinlock แตกต่างจากการเลือกตั้งอย่างไร
spinlock และการลงคะแนนเลือกตั้งเป็นสิ่งเดียวกันหรือไม่ วิกิพีเดีย: Spinlock เป็นล็อคซึ่งเป็นสาเหตุให้เธรดพยายามรับมันเพื่อรอในลูป ("หมุน") ในขณะที่ตรวจสอบซ้ำ ๆ ว่ามีล็อคอยู่หรือไม่ ฟังดูดีมาก ๆ : while(!ready); ฉันถูกสอนให้หลีกเลี่ยงการลงคะแนนเลือกตั้งทุกครั้งที่ทำได้ ดังนั้น spinlock เป็นชื่อแฟนซีสำหรับการเลือกตั้งเก่าที่ไม่ดีหรือไม่? spinlock แตกต่างจากการเลือกตั้งอย่างไร
41 locks  kernel  polling 

5
ความไม่สามารถเปลี่ยนรูปแบบได้ทั้งหมดไม่จำเป็นต้องล็อคในการเขียนโปรแกรมแบบหลายโปรเซสเซอร์หรือไม่?
ส่วนที่ 1 ชัดเจนไม่สามารถตัดทอนความต้องการล็อคในการเขียนโปรแกรมแบบมัลติโปรเซสเซอร์ลดความต้องการนั้นหรือมีกรณีที่ความไม่สามารถเปลี่ยนได้เพียงอย่างเดียวไม่เพียงพอหรือไม่? สำหรับฉันดูเหมือนว่าคุณสามารถเลื่อนการประมวลผลและรัฐแค็ปซูลได้นานก่อนที่โปรแกรมส่วนใหญ่จะต้องทำอะไรบางอย่างจริง (อัปเดตแหล่งข้อมูลสร้างรายงานยกเว้นข้อยกเว้น ฯลฯ ) การกระทำดังกล่าวสามารถทำได้โดยไม่ล็อคหรือไม่? การกระทำเพียงแค่โยนวัตถุแต่ละชิ้นออกไปและสร้างใหม่แทนที่จะเปลี่ยนแบบเดิม (มุมมองที่หยาบคายของการเปลี่ยนแปลงไม่ได้) ให้การป้องกันที่สมบูรณ์จากการโต้แย้งระหว่างกระบวนการหรือมีมุมที่ยังต้องล็อค? ฉันรู้ว่าโปรแกรมเมอร์และนักคณิตศาสตร์ที่ใช้งานได้จำนวนมากชอบพูดถึง "ไม่มีผลข้างเคียง" แต่ใน "โลกแห่งความจริง" ทุกอย่างมีผลข้างเคียงแม้ว่าจะถึงเวลาที่ต้องใช้คำสั่งเครื่อง ฉันสนใจทั้งคำตอบเชิงทฤษฎี / วิชาการและคำตอบเชิงปฏิบัติ / โลกแห่งความจริง หากความไม่สามารถเปลี่ยนแปลงได้ปลอดภัยตามขอบเขตหรือสมมติฐานบางอย่างฉันต้องการทราบว่าขอบเขตของ "เขตปลอดภัย" คืออะไรกันแน่ ตัวอย่างของขอบเขตที่เป็นไปได้: I / O ยกเว้น / ข้อผิดพลาด การโต้ตอบกับโปรแกรมที่เขียนเป็นภาษาอื่น การโต้ตอบกับเครื่องอื่น ๆ (ทางกายภาพเสมือนหรือตามทฤษฎี) ขอขอบคุณเป็นพิเศษสำหรับ @JimmaHoffa สำหรับความคิดเห็นของเขาซึ่งเริ่มต้นคำถามนี้! ส่วนที่ 2 การเขียนโปรแกรมหลายตัวประมวลผลมักจะใช้เป็นเทคนิคการเพิ่มประสิทธิภาพ - เพื่อให้โค้ดทำงานได้เร็วขึ้น เมื่อไหร่ที่จะใช้การล็อคกับวัตถุที่ไม่เปลี่ยนรูปได้เร็วขึ้น? เมื่อพิจารณาถึงขีด จำกัด ที่กำหนดไว้ในกฎหมายของ Amdahlคุณสามารถบรรลุประสิทธิภาพที่เหนือกว่าทุกประการ (ไม่ว่าจะมีหรือไม่มีตัวเก็บขยะที่พิจารณา) กับวัตถุที่ไม่เปลี่ยนรูปหรือการล็อควัตถุที่ไม่แน่นอน …

3
ฉันควรวางใบขับขี่ไว้ในที่ใด
ฉันเป็นผู้พัฒนารุ่นน้องที่กำลังทำงานเกี่ยวกับการเขียนอัปเดตสำหรับซอฟต์แวร์ที่รับข้อมูลจากโซลูชันของบุคคลที่สามจัดเก็บไว้ในฐานข้อมูลจากนั้นกำหนดเงื่อนไขข้อมูลสำหรับการใช้งานโดยโซลูชันของ บริษัท อื่น ซอฟต์แวร์ของเราทำงานเป็นบริการ Windows ดูรหัสจากรุ่นก่อนหน้าฉันเห็นสิ่งนี้: static Object _workerLocker = new object(); static int _runningWorkers = 0; int MaxSimultaneousThreads = 5; foreach(int SomeObject in ListOfObjects) { lock (_workerLocker) { while (_runningWorkers >= MaxSimultaneousThreads) { Monitor.Wait(_workerLocker); } } // check to see if the service has been stopped. If yes, then …
27 c#  .net  concurrency  locks 

4
สิ่งที่ป้องกันไม่ให้สภาพการแข่งขันในการล็อค?
ฉันเข้าใจพื้นฐานของเผ่าพันธุ์ของข้อมูลและวิธีการล็อก / mutexes / semaphores ช่วยป้องกันพวกเขา แต่จะเกิดอะไรขึ้นถ้าคุณมี "สภาพการแข่งขัน" บนตัวล็อค? ยกตัวอย่างเช่นสองหัวข้อที่แตกต่างกันบางทีในโปรแกรมเดียวกัน แต่ทำงานบนหน่วยประมวลผลที่แตกต่างกันพยายามที่จะได้รับการล็อคในเวลาเดียวกันแน่นอน จะเกิดอะไรขึ้น? จะทำอย่างไรเพื่อป้องกันสิ่งนั้น มันเป็นไปไม่ได้หรือไม่น่าเป็นไปได้? หรือว่าเป็นสภาพการแข่งขันที่แท้จริงที่จะเกิดขึ้น?

6
แนวทางปฏิบัติที่ดีที่สุดในการจัดการการเกิดพร้อมกันลงในตระกร้าในเว็บไซต์อีคอมเมิร์ซ
แนวทางที่ดีที่สุดในการจัดการกรณีที่ลูกค้าสองรายเพิ่มในเวลาเดียวกันกับผลิตภัณฑ์ที่มีสต็อกเพียง 1 คืออะไร ต้องมีการตรวจสอบในรหัสของตะกร้าเพื่อหลีกเลี่ยงหนึ่งใน 2 ลูกค้าเหล่านี้เพื่อเพิ่มผลิตภัณฑ์เดียวกันหรือไม่ หรือการตรวจสอบนี้จะต้องดำเนินการในขั้นตอนการชำระเงินในการทำเช่นแบบสอบถามที่สองเพื่อยืนยันว่าผลิตภัณฑ์ที่เกี่ยวข้องยังคงอยู่ในสต็อก (หมายถึงยังไม่ได้ซื้อโดยลูกค้าพร้อมกัน)?

1
วิธีปฏิบัติที่ดีที่สุดคือไม่ต้องสำรวจความคิดเห็น ... แต่จะไม่ทำการสำรวจความคิดเห็นภายในเมื่อมีการเรียกเธรดรอ ()
สมมติว่าเรามีเธรดบางตัวที่ต้องการตรวจสอบเมื่อเธรดอื่นเสร็จสิ้นภารกิจ ฉันได้อ่านแล้วว่าเราควรเรียกใช้ฟังก์ชันการรอ () ประเภทที่จะทำให้เธรดนี้รอจนกว่าจะได้รับการแจ้งเตือนว่าเธรดอื่นเสร็จสิ้นแล้ว และนี่เป็นสิ่งที่ดีเพราะมันหมายความว่าเราไม่ได้ทำการสำรวจที่มีราคาแพง แต่การเลือกตั้งไม่เกิดขึ้นภายในระดับล่าง คือถ้าเราให้เธรดรอ () ไม่ใช่โพลที่ทำการสำรวจเพื่อตรวจสอบว่าเธรดอื่นเสร็จสิ้นแล้วหรือไม่เพื่อให้สามารถแจ้งเธรดแรกได้ ฉันคิดว่าฉันพลาดอะไรบางอย่างที่นี่ใครบางคนสามารถสอนฉันได้ไหม

2
ทำไม Akka ถึงดีสำหรับการเกิดพร้อมกัน?
ฉันยังใหม่กับกรอบของอัคคาและนักแสดง - ฉันแน่ใจว่าฉันขาดอะไรที่ชัดเจนโปรดยอมรับคำขอโทษล่วงหน้า ฉันอ่านต่อไปว่าหนึ่งในประเด็นหลักในการเลือก Akka คือวิธีที่มันจัดการการทำงานพร้อมกัน ไม่ชัดเจนสำหรับฉันว่าทำไม Akka ถึงมีความพิเศษ ฉันเข้าใจว่ามีนักแสดงน้อยมากที่เบาและเร็วมาก อย่างไรก็ตามสิ่งนี้จะช่วยฉันได้อย่างไรเมื่อผู้ใช้สองคนบันทึกฟอร์มในเวลาเดียวกัน ฉันจะยังคงต้องล็อคการทำงานพร้อมกันบางอย่าง (มองโลกในแง่ร้าย / แง่ดี / ฯลฯ .. )?

4
PHP file_put_contents การล็อคไฟล์
Senario: คุณมีไฟล์ที่มีสตริง (ค่าเฉลี่ยประโยค) ในแต่ละบรรทัด เพื่อประโยชน์ในการโต้แย้งสมมติว่าไฟล์นี้มีขนาด 1Mb (หลายพันบรรทัด) คุณมีสคริปต์ที่อ่านไฟล์เปลี่ยนแปลงสตริงบางส่วนภายในเอกสาร (ไม่เพียง แต่ต่อท้าย แต่ยังลบและแก้ไขบางบรรทัด) แล้วเขียนทับข้อมูลทั้งหมดด้วยข้อมูลใหม่ คำถาม: 'เซิร์ฟเวอร์' PHP, OS หรือ httpd ฯลฯ มีระบบในสถานที่ที่จะหยุดปัญหาเช่นนี้ (อ่าน / เขียนครึ่งทางผ่านการเขียน) หรือไม่? ถ้าเป็นเช่นนั้นโปรดอธิบายวิธีการทำงานและให้ตัวอย่างหรือลิงก์ไปยังเอกสารที่เกี่ยวข้อง ถ้าไม่มีสิ่งที่ฉันสามารถเปิดใช้งานหรือตั้งค่าเช่นการล็อคไฟล์จนกว่าการเขียนจะเสร็จสมบูรณ์และทำให้การอ่านและ / หรือการเขียนอื่น ๆ ทั้งหมดล้มเหลวจนกว่าสคริปต์ก่อนหน้าจะเขียนเสร็จแล้วหรือไม่ ข้อสมมติฐานและข้อมูลอื่น ๆ ของฉัน: เซิร์ฟเวอร์ที่สงสัยกำลังเรียกใช้ PHP และ Apache หรือ Lighttpd หากสคริปต์ถูกเรียกใช้โดยผู้ใช้รายหนึ่งและอยู่กึ่งกลางผ่านการเขียนไปยังไฟล์และผู้ใช้รายอื่นอ่านไฟล์ในช่วงเวลาที่แน่นอน ผู้ใช้ที่อ่านมันจะไม่ได้รับเอกสารเต็มเนื่องจากยังไม่ได้เขียน (หากสมมติฐานนี้ผิดโปรดแก้ไขฉัน) ฉันกังวลเฉพาะการเขียน PHP และการอ่านไฟล์ข้อความและโดยเฉพาะอย่างยิ่งฟังก์ชั่น "fopen" / "fwrite" และส่วนใหญ่ "file_put_contents" …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.