คำถามติดแท็ก thread-safety

โค้ดส่วนหนึ่งจะปลอดภัยต่อเธรดหากเพียงปรับเปลี่ยนโครงสร้างข้อมูลในลักษณะที่อนุญาตให้ใช้โค้ดนี้อย่างสอดคล้องกันโดยหลายเธรด รหัสอาจเป็นเธรดปลอดภัยปลอดภัยตามเงื่อนไข (ต้องมีการยกเว้นร่วมกัน) หรือไม่ปลอดภัย (สามารถใช้ได้อย่างปลอดภัยโดยเธรดเดียวเท่านั้น)

11
threadsafe หมายถึงอะไร?
เมื่อเร็ว ๆ นี้ฉันพยายามเข้าถึงกล่องข้อความจากเธรด (นอกเหนือจากเธรด UI) และมีข้อยกเว้นเกิดขึ้น มันพูดบางอย่างเกี่ยวกับ "รหัสไม่ปลอดภัยเธรด" ดังนั้นฉันจึงลงเอยด้วยการเขียนตัวแทน (ตัวอย่างจาก MSDN ช่วย) และเรียกมันแทน แต่ถึงอย่างนั้นฉันก็ไม่ค่อยเข้าใจว่าทำไมต้องใช้รหัสพิเศษทั้งหมด อัปเดต: ฉันจะประสบปัญหาร้ายแรงหรือไม่หากตรวจสอบ Controls.CheckForIllegalCrossThread..blah =true

15
คุณสมบัติ Thread-safe List <T>
ฉันต้องการนำไปใช้List&lt;T&gt;เป็นคุณสมบัติที่สามารถใช้เธรดได้อย่างปลอดภัยโดยไม่ต้องสงสัย สิ่งนี้: private List&lt;T&gt; _list; private List&lt;T&gt; MyT { get { // return a copy of _list; } set { _list = value; } } ดูเหมือนว่าฉันยังต้องส่งคืนสำเนา (โคลน) ของคอลเลกชันดังนั้นหากมีที่ไหนสักแห่งที่เรากำลังทำซ้ำคอลเลกชันและในเวลาเดียวกันก็มีการตั้งค่าคอลเล็กชันจะไม่มีการเพิ่มข้อยกเว้น วิธีใช้คุณสมบัติการรวบรวมเธรดที่ปลอดภัย

1
const หมายถึง thread-safe ใน C ++ 11 หรือไม่?
ผมได้ยินว่าconstหมายถึงด้ายปลอดภัยในC ++ 11 เป็นเช่นนั้นจริงหรือ? หมายความว่าconstตอนนี้เทียบเท่าของJava 's synchronized? พวกเขาใช้คีย์เวิร์ดหมดหรือไม่


8
อะไรคือวิธีที่ดีที่สุดในการติดตั้งพจนานุกรมเธรดที่ปลอดภัย
ฉันสามารถใช้พจนานุกรมเธรดปลอดภัยใน C # ได้โดยหามาจาก IDictionary และกำหนดอ็อบเจ็กต์ SyncRoot ส่วนตัว: public class SafeDictionary&lt;TKey, TValue&gt;: IDictionary&lt;TKey, TValue&gt; { private readonly object syncRoot = new object(); private Dictionary&lt;TKey, TValue&gt; d = new Dictionary&lt;TKey, TValue&gt;(); public object SyncRoot { get { return syncRoot; } } public void Add(TKey key, TValue value) { lock (syncRoot) { …


3
ความปลอดภัยของเธรดในพจนานุกรมของ Python
ฉันมีชั้นเรียนที่มีพจนานุกรม class OrderBook: orders = {'Restaurant1': None, 'Restaurant2': None, 'Restaurant3': None, 'Restaurant4': None} @staticmethod def addOrder(restaurant_name, orders): OrderBook.orders[restaurant_name] = orders และฉันทำงาน 4 กระทู้ (หนึ่งสำหรับแต่ละร้านอาหาร) OrderBook.addOrderที่เรียกวิธี นี่คือฟังก์ชั่นที่รันโดยแต่ละเธรด: def addOrders(restaurant_name): #creates orders ... OrderBook.addOrder(restaurant_name, orders) มีความปลอดภัยนี้หรือฉันจะต้องใช้ล็อคก่อนที่จะเรียกaddOrder?

2
เธรด SecureRandom ปลอดภัยหรือไม่
คือSecureRandomความปลอดภัยด้าย? นั่นคือหลังจากกำหนดค่าเริ่มต้นแล้วจะสามารถเข้าถึงหมายเลขสุ่มถัดไปได้เพื่อให้เธรดปลอดภัยหรือไม่? การตรวจสอบซอร์สโค้ดดูเหมือนจะแสดงให้เห็นว่าเป็นเช่นนั้นและดูเหมือนว่ารายงานข้อบกพร่องนี้จะบ่งชี้ว่าไม่มีเอกสารประกอบเนื่องจากเธรดปลอดภัยเป็นปัญหาของ javadoc มีใครยืนยันว่าปลอดภัยจริง?

3
ตัวแปรโกลบอลเธรดปลอดภัยใน Flask หรือไม่ ฉันจะแบ่งปันข้อมูลระหว่างคำขอได้อย่างไร
ในแอปพลิเคชันของฉันสถานะของวัตถุทั่วไปจะเปลี่ยนไปโดยการร้องขอและการตอบสนองขึ้นอยู่กับสถานะ class SomeObj(): def __init__(self, param): self.param = param def query(self): self.param += 1 return self.param global_obj = SomeObj(0) @app.route('/') def home(): flash(global_obj.query()) render_template('index.html') หากฉันเรียกใช้สิ่งนี้บนเซิร์ฟเวอร์การพัฒนาของฉันฉันคาดว่าจะได้รับ 1, 2, 3 และอื่น ๆ หากมีการร้องขอจากลูกค้าที่แตกต่างกัน 100 รายพร้อมกันอาจเกิดข้อผิดพลาดหรือไม่? ผลลัพธ์ที่คาดหวังคือลูกค้าที่แตกต่างกัน 100 รายแต่ละรายจะเห็นหมายเลขที่ไม่ซ้ำกันตั้งแต่ 1 ถึง 100 หรือจะเกิดเหตุการณ์เช่นนี้: แบบสอบถามลูกค้า 1 self.paramเพิ่มขึ้นทีละ 1 ก่อนที่จะดำเนินการคำสั่ง return เธรดจะสลับไปที่ไคลเอนต์ 2 self.paramจะเพิ่มขึ้นอีกครั้ง เธรดจะเปลี่ยนกลับไปที่ไคลเอนต์ …

4
iphone ios ทำงานในเธรดแยกต่างหาก
วิธีที่ดีที่สุดในการรันโค้ดบนเธรดแยกคืออะไร ใช่ไหม: [NSThread detachNewThreadSelector: @selector(doStuff) toTarget:self withObject:NULL]; หรือ: NSOperationQueue *queue = [NSOperationQueue new]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(doStuff:) object:nil; [queue addOperation:operation]; [operation release]; [queue release]; ฉันทำวิธีที่สองแล้ว แต่ Wesley Cookbook ที่ฉันเคยอ่านใช้แบบแรก


7
ฉันจะทำการทดสอบ JUnit รอได้อย่างไร
ฉันมีการทดสอบ JUnit ที่ฉันต้องการรอเป็นระยะเวลาหนึ่งพร้อมกัน การทดสอบ JUnit ของฉันมีลักษณะดังนี้: @Test public void testExipres(){ SomeCacheObject sco = new SomeCacheObject(); sco.putWithExipration("foo", 1000); // WAIT FOR 2 SECONDS assertNull(sco.getIfNotExipred("foo")); } ฉันพยายามThread.currentThread().wait()แล้ว แต่มันพ่นIllegalMonitorStateException (ตามที่คาดไว้) มีเคล็ดลับบางอย่างหรือฉันต้องการจอภาพอื่น?

3
จะรู้ได้อย่างไรว่าอะไรไม่ปลอดภัยในทับทิม?
เริ่มต้นจาก Rails 4ทุกอย่างจะต้องทำงานในสภาพแวดล้อมแบบเธรดโดยค่าเริ่มต้น ความหมายนี้คือโค้ดทั้งหมดที่เราเขียนและ อัญมณีทั้งหมดที่เราใช้จะต้องเป็นthreadsafe ดังนั้นฉันมีคำถามสองสามข้อเกี่ยวกับเรื่องนี้: อะไรที่ไม่ปลอดภัยต่อเกลียวในทับทิม / ราง? Vsอะไรคือความปลอดภัยของเกลียวในทับทิม / ราง? มีรายการของอัญมณีที่เป็นที่รู้จักกันเป็นด้ายหรือในทางกลับกัน? มีรายการรูปแบบทั่วไปของรหัสที่ไม่ใช่ตัวอย่างที่ปลอดภัย@result ||= some_methodหรือไม่ โครงสร้างข้อมูลใน Ruby lang core เช่นHashetc threadsafe หรือไม่? ใน MRI ซึ่งมีGVL/GILซึ่งหมายความว่าเธรดทับทิมเพียง 1 เส้นเท่านั้นที่สามารถทำงานได้ในแต่ละครั้งยกเว้นIOเธรดที่ปลอดภัยมีผลต่อเราหรือไม่?

8
เหตุใดเธรดตัวแปรโลคัลจึงปลอดภัยใน Java
ฉันกำลังอ่านมัลติเธรดใน Java และฉันเจอสิ่งนี้ ตัวแปรโลคัลคือเธรดที่ปลอดภัยใน Java ตั้งแต่นั้นมาฉันก็คิดว่าตัวแปรในเครื่องมีความปลอดภัยอย่างไร / ทำไม ใครช่วยแจ้งให้เราทราบได้

7
ตรวจสอบว่า PHP ที่ติดตั้งเป็นเธรดปลอดภัยหรือไม่ปลอดภัย?
ฉันจะทราบได้อย่างไรว่า PHP เวอร์ชันที่ติดตั้งนั้นปลอดภัยสำหรับเธรดหรือไม่เธรดปลอดภัย โปรดทราบว่าฉันไม่ได้ถามความแตกต่างระหว่างการติดตั้งเธรดที่ปลอดภัย / ไม่ใช่เธรดที่ปลอดภัย ฉันต้องการทราบสิ่งที่ติดตั้งอยู่ในขณะนี้
91 php  iis  thread-safety 

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