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

ในวิทยาการคอมพิวเตอร์การทำงานพร้อมกันเป็นคุณสมบัติของระบบที่สามารถทำการคำนวณหลายอย่างในช่วงเวลาที่ทับซ้อนกัน การคำนวณอาจดำเนินการบนหลายคอร์ในชิปตัวเดียวกันเธรดที่แบ่งใช้เวลาล่วงหน้าบนโปรเซสเซอร์เดียวกันหรือดำเนินการกับตัวประมวลผลที่แยกทางกายภาพ

18
คำว่า "thread-safe" หมายถึงอะไร?
หมายความว่าสองเธรดไม่สามารถเปลี่ยนข้อมูลพื้นฐานพร้อมกันได้หรือไม่ หรือหมายความว่าส่วนรหัสที่กำหนดจะทำงานด้วยผลลัพธ์ที่สามารถคาดการณ์ได้เมื่อมีหลายเธรดที่กำลังเรียกใช้งานส่วนรหัสนั้น

14
สัญญาณคืออะไร?
สัญญาณเป็นแนวคิดการเขียนโปรแกรมที่ใช้บ่อยในการแก้ปัญหาหลายเธรด คำถามของฉันถึงชุมชน: เซมาฟอร์คืออะไรและคุณใช้มันอย่างไร

18
ความแตกต่างระหว่างการเขียนโปรแกรมพร้อมกันและการเขียนโปรแกรมแบบขนานคืออะไร?
ความแตกต่างระหว่างการเขียนโปรแกรมพร้อมกันและการวางโปรแกรมแบบขนานคืออะไร? ฉันถาม google แต่ไม่พบสิ่งใดที่ช่วยให้ฉันเข้าใจความแตกต่างนั้น คุณช่วยยกตัวอย่างให้ฉันได้ไหม ตอนนี้ฉันพบคำอธิบายนี้แล้ว: http://www.linux-mag.com/id/7411 - แต่ "ภาวะพร้อมกันเป็นคุณสมบัติของโปรแกรม" vs "การทำงานแบบขนานเป็นคุณสมบัติของเครื่อง" ไม่เพียงพอสำหรับฉัน - ถึงกระนั้นฉันก็พูดอะไรไม่ออกไม่ได้

16
การตั้งค่า NOCOUNT ON
แรงบันดาลใจจากคำถามนี้ที่มีมุมมองที่แตกต่างกันใน SET NOCOUNT ... เราควรใช้ SET NOCOUNT ON สำหรับ SQL Server หรือไม่ ถ้าไม่ทำไมล่ะ การแก้ไข 6 ในวันที่ 22 กรกฎาคม 2011 คืออะไร จะไม่แสดงข้อความ "แถว xx ที่ได้รับผลกระทบ" หลังจาก DML ใด ๆ นี่เป็นชุดผลลัพธ์และเมื่อส่งลูกค้าจะต้องดำเนินการ มันเล็ก แต่วัดได้ (ดูคำตอบด้านล่าง) สำหรับทริกเกอร์ ฯลฯ ลูกค้าจะได้รับ "xx rows ที่ได้รับผลกระทบ" หลายครั้งและทำให้เกิดข้อผิดพลาดทุกรูปแบบสำหรับ ORMs บางตัว, MS Access, JPA และอื่น ๆ (ดูการแก้ไขด้านล่าง) พื้นหลัง: วิธีปฏิบัติที่ดีที่สุดที่เป็นที่ยอมรับทั่วไป (ฉันคิดว่าจนกระทั่งคำถามนี้) …

8
เหตุใดจึงต้องใช้ ReentrantLock ถ้าใครสามารถใช้ข้อมูลให้ตรงกัน (นี่)
synchronized (this)ฉันพยายามที่จะเข้าใจสิ่งที่ทำให้ล็อคในการทำงานพร้อมกันที่สำคัญดังนั้นหากสามารถใช้ ในรหัสจำลองด้านล่างฉันสามารถทำอย่างใดอย่างหนึ่ง: ทำข้อมูลให้ตรงกันทั้งวิธีหรือประสานพื้นที่เสี่ยง ( synchronized(this){...}) หรือล็อคพื้นที่โค้ดที่มีช่องโหว่ด้วย ReentrantLock รหัส: private final ReentrantLock lock = new ReentrantLock(); private static List<Integer> ints; public Integer getResult(String name) { . . . lock.lock(); try { if (ints.size()==3) { ints=null; return -9; } for (int x=0; x<ints.size(); x++) { System.out.println("["+name+"] "+x+"/"+ints.size()+". values >>>>"+ints.get(x)); } } …

9
“ Java Concurrency In Practice” ยังคงใช้ได้หรือไม่ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ คือJava Concurrency ในการปฏิบัติยังคงถูกต้อง? ฉันสงสัยว่าแนวคิดแนวคิดและการนำไปปฏิบัติที่อธิบายไว้ในหนังสือเล่มนี้ยังคงสอดคล้องกับ Java เวอร์ชันล่าสุดหรือไม่ ฉันถามเพราะฉบับล่าสุดทำในปี 2549

9
ทับทิมมีมัลติเธรดจริงหรือไม่?
ฉันรู้เกี่ยวกับเกลียว "สหกรณ์" ทับทิมใช้หัวข้อสีเขียว ฉันจะสร้างเธรด "ระดับระบบปฏิบัติการ" จริงในแอปพลิเคชันของฉันเพื่อใช้ประโยชน์จากหลายแกน cpu สำหรับการประมวลผลได้อย่างไร

3
การประมวลผลหลายตัวพูล: เมื่อใดที่จะใช้ใช้ Apply_async หรือแผนที่
ฉันไม่ได้เห็นตัวอย่างที่ชัดเจนกับกรณีการใช้งานสำหรับPool.apply , Pool.apply_asyncและPool.map ฉันใช้เป็นหลักPool.map; ข้อดีของผู้อื่นคืออะไร

16
วิธีที่เร็วที่สุดในการส่งคำขอ HTTP 100,000 รายการใน Python คืออะไร
ฉันกำลังเปิดไฟล์ซึ่งมี 100,000 URL ฉันต้องส่งคำขอ HTTP ไปยังแต่ละ URL แล้วพิมพ์รหัสสถานะ ฉันใช้ Python 2.6 และดูวิธีที่สับสนหลายครั้งที่ Python ใช้เธรด / การทำงานพร้อมกัน ฉันได้ดูแม้ที่หลามสามัคคีห้องสมุด แต่ไม่สามารถคิดออกว่าจะเขียนโปรแกรมนี้ได้อย่างถูกต้อง มีใครเจอปัญหาที่คล้ายกัน? ฉันเดาว่าโดยทั่วไปฉันจำเป็นต้องรู้วิธีปฏิบัติงานหลายพันอย่างใน Python ให้เร็วที่สุดเท่าที่จะทำได้ฉันคิดว่านั่นหมายถึง 'พร้อมกัน'
287 python  http  concurrency 

6
Node.js เร็วขึ้นเพียงใดโดยที่ยังคงใช้ Threads ภายในอยู่
ฉันเพิ่งดูวิดีโอต่อไปนี้: รู้เบื้องต้นเกี่ยวกับ Node.jsและยังไม่เข้าใจว่าคุณจะได้รับประโยชน์จากความเร็วได้อย่างไร โดยหลักแล้ว ณ จุดหนึ่ง Ryan Dahl (ผู้สร้างของ Node.js) กล่าวว่า Node.js เป็นแบบวนรอบเหตุการณ์แทนที่จะเป็นแบบเธรด หัวข้อมีราคาแพงและควรจะเหลือผู้เชี่ยวชาญของการเขียนโปรแกรมพร้อมกันที่จะใช้ หลังจากนั้นเขาจะแสดงสแต็กสถาปัตยกรรมของ Node.js ซึ่งมีการใช้งาน C พื้นฐานซึ่งมีกลุ่มเธรดของตัวเองภายใน ดังนั้นนักพัฒนา Node.js จะไม่เริ่มต้นเธรดของตนเองหรือใช้เธรดพูลโดยตรง ... พวกเขาใช้ async call-backs ฉันเข้าใจมาก สิ่งที่ฉันไม่เข้าใจคือจุดที่ Node.js ยังคงใช้เธรด ... มันเพิ่งซ่อนการนำไปใช้งานดังนั้นวิธีนี้จะเร็วขึ้นหากมีคน 50 คนร้องขอไฟล์ 50 ไฟล์ (ไม่ใช่ในหน่วยความจำในปัจจุบัน) แล้วก็ไม่จำเป็นต้อง 50 เธรด ? ความแตกต่างเพียงอย่างเดียวคือเนื่องจากมีการจัดการภายในนักพัฒนา Node.js ไม่จำเป็นต้องเขียนโค้ดรายละเอียดของเธรด แต่ภายใต้มันยังคงใช้เธรดเพื่อประมวลผลคำขอไฟล์ IO (การบล็อก) ดังนั้นคุณไม่เพียงแค่นำปัญหาเดียว (เธรด) และซ่อนไว้ในขณะที่ปัญหานั้นยังคงมีอยู่: …

6
มีรายการพร้อมกันใน JDK ของ Java หรือไม่
ฉันจะสร้างอินสแตนซ์ของรายการที่เกิดขึ้นพร้อมกันซึ่งฉันสามารถเข้าถึงองค์ประกอบตามดัชนีได้อย่างไร JDK มีคลาสหรือวิธีการจากโรงงานใดบ้างที่ฉันสามารถใช้ได้
277 java  list  concurrency 

7
ความแตกต่างระหว่างอนาคตและสัญญาคืออะไร?
ความแตกต่างระหว่างFutureและPromiseคืออะไร พวกเขาทั้งสองทำตัวเหมือนเป็นตัวแทนสำหรับผลลัพธ์ในอนาคต แต่ความแตกต่างหลักอยู่ที่ไหน

8
Volatile vs Static ใน Java
มันถูกต้องหรือไม่ที่จะบอกว่านั่นstaticหมายถึงหนึ่งสำเนาของค่าสำหรับวัตถุทั้งหมดและvolatileหมายถึงหนึ่งสำเนาของค่าสำหรับเธรดทั้งหมดหรือไม่ อย่างไรก็ตามstaticค่าตัวแปรก็จะเป็นหนึ่งค่าสำหรับกระทู้ทั้งหมดแล้วทำไมเราควรจะไปvolatile?

12
AsyncTask มีข้อบกพร่องทางแนวคิดจริงๆหรือฉันแค่ทำบางสิ่งหายไป?
ฉันได้ตรวจสอบปัญหานี้มาหลายเดือนแล้วและหาวิธีแก้ปัญหาที่แตกต่างกันไปซึ่งฉันไม่พอใจเพราะมันเป็นแฮ็คขนาดใหญ่ ฉันยังไม่สามารถเชื่อได้ว่าคลาสที่มีข้อบกพร่องด้านการออกแบบทำให้มันเข้ากับกรอบงานและไม่มีใครพูดถึงมันดังนั้นฉันคิดว่าฉันต้องพลาดบางสิ่งบางอย่าง AsyncTaskปัญหาอยู่ที่ ตามเอกสารนั้น "อนุญาตให้ดำเนินการพื้นหลังและเผยแพร่ผลลัพธ์บนเธรด UI โดยไม่ต้องจัดการกับเธรดและ / หรือตัวจัดการ" ตัวอย่างแล้วยังแสดงให้เห็นว่าบางอย่างที่เป็นแบบอย่างวิธีการที่เรียกว่าshowDialog() onPostExecute()นี้ แต่ดูเหมือนว่าที่วางแผนอย่างสิ้นเชิงกับผมเพราะแสดงโต้ตอบเสมอต้องมีการอ้างอิงถึงที่ถูกต้องContextและ AsyncTask ไม่ต้องถืออ้างอิงที่แข็งแกร่งให้กับวัตถุบริบท เหตุผลชัดเจน: เกิดอะไรขึ้นถ้ากิจกรรมถูกทำลายซึ่งก่อให้เกิดงาน? สิ่งนี้สามารถเกิดขึ้นได้ตลอดเวลาเช่นเนื่องจากคุณพลิกหน้าจอ หากงานนั้นจะมีการอ้างอิงถึงบริบทที่สร้างคุณไม่เพียง แต่จะถือวัตถุบริบทที่ไร้ประโยชน์ (หน้าต่างจะถูกทำลายและการโต้ตอบ UI ใด ๆจะล้มเหลวด้วยข้อยกเว้น!) คุณยังมีความเสี่ยงในการสร้าง หน่วยความจำรั่ว ยกเว้นว่าตรรกะของฉันมีข้อบกพร่องนี่แปลเป็น: onPostExecute()ไร้ประโยชน์อย่างสิ้นเชิงเพราะวิธีนี้จะทำงานบนเธรด UI ได้ดีเพียงใดหากคุณไม่สามารถเข้าถึงบริบทใด ๆ คุณไม่สามารถทำอะไรที่มีความหมายได้ที่นี่ วิธีแก้ปัญหาหนึ่งคือการไม่ส่งอินสแตนซ์บริบทไปยัง AsyncTask แต่เป็นHandlerอินสแตนซ์ ใช้งานได้: เนื่องจากตัวจัดการผูกบริบทและภารกิจไว้อย่างหลวม ๆ คุณสามารถแลกเปลี่ยนข้อความระหว่างกันโดยไม่เสี่ยงต่อการรั่วไหล (ใช่ไหม) แต่นั่นหมายความว่าสถานที่ตั้งของ AsyncTask คือคุณไม่จำเป็นต้องกังวลกับตัวจัดการผิด ดูเหมือนว่าการใช้ Handler ในทางที่ผิดเนื่องจากคุณกำลังส่งและรับข้อความในเธรดเดียวกัน (คุณสร้างมันบนเธรด UI และส่งผ่านมันใน onPostExecute () …

10
ทำไมต้องรอ () อยู่ในบล็อกที่ซิงโครไนซ์เสมอ
เราทุกคนรู้ว่าเพื่อที่จะเรียกการเรียกObject.wait()นี้จะต้องอยู่ในบล็อกที่ทำข้อมูลให้ตรงกันมิฉะนั้นIllegalMonitorStateExceptionจะถูกโยน แต่อะไรคือสาเหตุที่ทำให้ข้อ จำกัด นี้คืออะไร? ฉันรู้ว่าการwait()เผยแพร่จอภาพ แต่ทำไมเราต้องได้รับจอภาพอย่างชัดเจนโดยการบล็อกการซิงโครไนซ์โดยเฉพาะแล้วปล่อยจอภาพโดยการโทรwait()? อะไรคือความเสียหายที่อาจเกิดขึ้นหากเป็นไปได้ที่จะเรียกใช้wait()นอกบล็อกที่ซิงโครไนซ์โดยรักษาความหมายไว้ - ระงับเธรดผู้โทร?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.