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

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

7
จอภาพใน Java คืออะไร?
จอภาพที่อ้างถึงในการเขียนโปรแกรมพร้อมกันใน Java คืออะไร? เมื่ออ่านพบว่า "ทุกวัตถุเชื่อมโยงกับจอภาพ" หมายความว่าอย่างไร เป็นวัตถุพิเศษหรือไม่?

12
จะใช้การรอและการแจ้งเตือนใน Java ได้อย่างไรโดยไม่ใช้
ฉันมีเมทริกซ์ 2 ตัวและต้องคูณพวกมันแล้วพิมพ์ผลลัพธ์ของแต่ละเซลล์ ทันทีที่เซลล์หนึ่งพร้อมฉันต้องพิมพ์ แต่ตัวอย่างเช่นฉันต้องพิมพ์เซลล์ [0] [0] ก่อนเซลล์ [2] [0] แม้ว่าผลลัพธ์ของ [2] [0] จะพร้อมก่อน . ดังนั้นฉันต้องพิมพ์ตามคำสั่ง ดังนั้นความคิดของฉันคือการทำให้เธรดเครื่องพิมพ์รอจนกว่าmultiplyThreadจะแจ้งให้ทราบว่าเซลล์ที่ถูกต้องพร้อมที่จะพิมพ์แล้วprinterThreadจะพิมพ์เซลล์และกลับไปรอเป็นต้น ดังนั้นฉันมีหัวข้อนี้ที่จะคูณ: public void run() { int countNumOfActions = 0; // How many multiplications have we done int maxActions = randomize(); // Maximum number of actions allowed for (int i = 0; i < …

8
Android: ฉันควรใช้ Handler () เมื่อใดและควรใช้ Thread เมื่อใด
เมื่อฉันต้องการบางสิ่งบางอย่างเพื่อให้ทำงานแบบอะซิงโครนัสเช่นงานที่ทำงานเป็นเวลานานหรือตรรกะที่ใช้เครือข่ายหรือไม่ว่าด้วยเหตุผลใดก็ตามการเริ่มเธรดใหม่และเรียกใช้งานจะทำงานได้ดี การสร้างHandlerและเรียกใช้งานได้เช่นกัน อะไรคือความแตกต่าง? ฉันควรใช้แต่ละตัวเมื่อใด ข้อดี / เหตุผลในการใช้ a Handlerและ not a Threadคืออะไร? PS - AsyncTaskเพื่อประโยชน์ของคำถามนี้ขอไม่สนใจ - Handler().postDelayedกรณีการใช้งานเป็นเรื่องที่ชัดเจนสำหรับฉันสำหรับคำถามนี้สมมติว่าฉันต้องการให้งานเริ่มทันที



13
จะทำให้เธรด Java รอเอาต์พุตของเธรดอื่นได้อย่างไร
ฉันกำลังสร้างแอปพลิเคชัน Java ด้วยแอปพลิเคชันตรรกะเธรดและเธรดการเข้าถึงฐานข้อมูล ทั้งสองอย่างคงอยู่ตลอดอายุการใช้งานของแอปพลิเคชันและทั้งคู่ต้องทำงานพร้อมกัน (คนหนึ่งคุยกับเซิร์ฟเวอร์คนหนึ่งคุยกับผู้ใช้เมื่อแอปเริ่มทำงานโดยสมบูรณ์ฉันต้องให้ทั้งสองคนทำงาน) อย่างไรก็ตามในการเริ่มต้นฉันต้องตรวจสอบให้แน่ใจว่าในตอนแรกเธรดของแอปจะรอจนกว่าเธรด db จะพร้อม (ขณะนี้กำหนดโดยการสำรวจวิธีการที่กำหนดเองdbthread.isReady()) ฉันจะไม่รังเกียจถ้าเธรดแอปบล็อกจนกว่าเธรดฐานข้อมูลจะพร้อม Thread.join() ดูเหมือนวิธีแก้ปัญหา - เธรดฐานข้อมูลจะออกเมื่อปิดแอปเท่านั้น while (!dbthread.isReady()) {} ชนิดของการทำงาน แต่การวนรอบว่างจะกินรอบตัวประมวลผลมาก ความคิดอื่น ๆ ? ขอบคุณ

8
เหตุใด Thread.Sleep จึงเป็นอันตราย
ฉันมักจะเห็นมันพูดถึงว่าThread.Sleep();ไม่ควรใช้ แต่ฉันไม่เข้าใจว่าทำไมถึงเป็นเช่นนั้น หากThread.Sleep();สามารถก่อให้เกิดปัญหามีทางเลือกอื่นใดที่ให้ผลลัพธ์เหมือนกันซึ่งจะปลอดภัยหรือไม่? เช่น. while(true) { doSomework(); i++; Thread.Sleep(5000); } อีกอันคือ: while (true) { string[] images = Directory.GetFiles(@"C:\Dir", "*.png"); foreach (string image in images) { this.Invoke(() => this.Enabled = true); pictureBox1.Image = new Bitmap(image); Thread.Sleep(1000); } }
128 c#  multithreading  sleep 

15
เมื่อใดควรใช้เธรดพูลใน C #? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่? อัปเดตคำถามเพื่อให้สามารถตอบพร้อมข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันพยายามเรียนรู้การเขียนโปรแกรมแบบมัลติเธรดใน C # และฉันก็สับสนว่าเมื่อใดควรใช้เธรดพูลกับการสร้างเธรดของฉันเอง หนังสือเล่มหนึ่งแนะนำให้ใช้เธรดพูลสำหรับงานเล็ก ๆ เท่านั้น (ไม่ว่าจะหมายถึงอะไรก็ตาม) แต่ดูเหมือนว่าฉันจะไม่พบแนวทางที่แท้จริง คุณใช้ข้อพิจารณาอะไรบ้างในการตัดสินใจเขียนโปรแกรมนี้

7
Visual Studio ดีบักหนึ่งในหลายเธรด
ฉันมีแอปพลิเคชันที่มี 4 เธรดที่ใช้รหัสเดียวกัน อย่างไรก็ตามเมื่อฉันก้าวมันกระโดดไปมาระหว่างเธรดต่างๆ ฉันจะล็อคเข้ากับเธรดเดียวเพื่อให้เธรดอื่นถูกละเว้นสำหรับการดีบักได้อย่างไร

13
เป็นไปไม่ได้ที่จะสร้างพูลเธรดแบบแคชที่มีขนาด จำกัด ?
ดูเหมือนว่าจะเป็นไปไม่ได้ที่จะสร้างพูลเธรดที่แคชโดย จำกัด จำนวนเธรดที่สามารถสร้างได้ นี่คือวิธีการใช้งาน Executors.newCachedThreadPool แบบคงที่ในไลบรารี Java มาตรฐาน: public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); } ดังนั้นการใช้เทมเพลตนั้นเพื่อสร้างพูลเธรดที่แคชขนาดคงที่: new ThreadPoolExecutor(0, 3, 60L, TimeUnit.SECONDS, new SynchronusQueue<Runable>()); ตอนนี้ถ้าคุณใช้สิ่งนี้และส่งงาน 3 อย่างทุกอย่างจะเรียบร้อย การส่งงานเพิ่มเติมใด ๆ จะทำให้ถูกปฏิเสธข้อยกเว้นในการดำเนินการ ลองทำสิ่งนี้: new ThreadPoolExecutor(0, 3, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runable>()); จะส่งผลให้เธรดทั้งหมดดำเนินการตามลำดับ กล่าวคือเธรดพูลจะไม่สร้างเธรดมากกว่าหนึ่งเธรดเพื่อจัดการงานของคุณ นี่คือบั๊กในวิธีการรันของ ThreadPoolExecutor? หรืออาจจะเป็นความตั้งใจ? หรือมีวิธีอื่นบ้าง? …

12
จะรู้ได้อย่างไรว่ากระทู้อื่นจบแล้ว?
ฉันมีวัตถุที่มีเมธอดชื่อStartDownload()ซึ่งเริ่มต้นสามเธรด ฉันจะรับการแจ้งเตือนได้อย่างไรเมื่อแต่ละเธรดดำเนินการเสร็จสิ้น มีวิธีที่จะทราบว่าเธรดหนึ่ง (หรือทั้งหมด) เสร็จสิ้นหรือยังคงดำเนินการอยู่หรือไม่?

7
เหตุใด setState จึงอยู่ใน reactjs Async แทนที่จะเป็น Sync
ฉันเพิ่งพบว่าในthis.setState()ฟังก์ชันreact ในส่วนประกอบใด ๆ เป็นแบบอะซิงโครนัสหรือเรียกว่าหลังจากเสร็จสิ้นฟังก์ชันที่ถูกเรียกใช้ ตอนนี้ฉันค้นหาและพบบล็อกนี้ ( setState () State Mutation Operation อาจซิงโครนัสใน ReactJS ) ที่นี่เขาพบว่าsetStateเป็น async (เรียกว่าเมื่อ stack ว่างเปล่า) หรือ sync (เรียกทันทีที่เรียก) ขึ้นอยู่กับว่าการเปลี่ยนสถานะถูกกระตุ้นอย่างไร ตอนนี้สองสิ่งนี้ย่อยยาก ในบล็อกsetStateฟังก์ชันถูกเรียกใช้ภายในฟังก์ชันupdateStateแต่สิ่งที่เรียกใช้updateStateฟังก์ชันนั้นไม่ใช่สิ่งที่ฟังก์ชันที่เรียกว่าจะรู้ ทำไมพวกเขาถึงทำให้setStateasync เป็น JS เป็นภาษาเธรดเดียวและ setState นี้ไม่ใช่การเรียกใช้ WebAPI หรือเซิร์ฟเวอร์ดังนั้นต้องทำในเธรดของ JS เท่านั้น พวกเขาทำเช่นนี้เพื่อให้ Re-Rendering ไม่หยุดผู้ฟังเหตุการณ์และสิ่งของทั้งหมดหรือมีปัญหาด้านการออกแบบอื่น ๆ


8
Powershell สามารถเรียกใช้คำสั่งแบบขนานได้หรือไม่
ฉันมีสคริปต์ powershell เพื่อทำการประมวลผลแบบแบตช์กับรูปภาพจำนวนมากและฉันต้องการทำการประมวลผลแบบขนาน ดูเหมือนว่า Powershell จะมีตัวเลือกการประมวลผลเบื้องหลังเช่น start-job, wait-job ฯลฯ แต่ทรัพยากรที่ดีเพียงอย่างเดียวที่ฉันพบสำหรับการทำงานคู่ขนานคือการเขียนข้อความของสคริปต์และเรียกใช้สิ่งเหล่านั้น ( PowerShell Multithreading ) ตามหลักการแล้วฉันต้องการบางสิ่งที่คล้ายกับ foreach แบบขนานใน. net 4 สิ่งที่ดูเหมือนจะไม่สวยเช่น: foreach-parallel -threads 4 ($file in (Get-ChildItem $dir)) { .. Do Work } บางทีฉันอาจจะดีกว่าแค่ทิ้งตัวลงไปที่ c # ...

3
ความแตกต่างระหว่าง dispatch_async และ dispatch_sync บน Serial Queue?
ฉันได้สร้างอนุกรมคิวดังนี้: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); อะไรคือความแตกต่างระหว่างที่dispatch_asyncเรียกเช่นนี้ dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); แล้วdispatch_syncเรียกแบบนี้บนซีเรียลคิว? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, ^{ /* TASK 2 */ }); ความเข้าใจของฉันคือไม่ว่าจะใช้วิธีการจัดส่งแบบใดTASK 1จะถูกดำเนินการและเสร็จสิ้นก่อนTASK 2ถูกต้องหรือไม่?

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