c 多執行緒資料共享問題

發布 科技 2024-07-26
5個回答
  1. 匿名使用者2024-01-31

    共享資料並不難,你只需要在建立執行緒物件時,在啟動執行緒之前(通常是在構造執行緒物件時)傳入要共享的資料物件即可。 但必須注意的是:

    1.共享的資料必須是執行緒安全的,因為涉及兩個執行緒的併發訪問。

    2.如果需要訪問共享資料中的其他物件,則對它們中的引用也必須是執行緒安全的。

    貼上 a**:object shareobject; // init object you need.

    var t1 = new =>

    arg is shareobjectvar t2 = new =>

    arg is shareobject;;

  2. 匿名使用者2024-01-30

    在類中啟動的兩個執行緒(執行緒的**不寫入另乙個類),只要可以訪問該類的字段,具體的共享資料,就看你想如何定義它了,注意共享資料的安全性,在訪問共享資料時不要形成死鎖。

    如果當前類是窗體,請確保 UI 的輸出是跨執行緒的。

    還有很多其他方法,只要知道基礎知識,就可以靈活使用。

  3. 匿名使用者2024-01-29

    1. 定義兩個執行緒安全佇列(後跟 B,其中 A 用於儲存接收到的資料,B 用於儲存要持久化的資料。

    2. 執行緒 A 在迴圈中讀取資料並將其儲存在佇列 A 中。

    3. 執行緒 B 迴圈從佇列 A 讀取資料。

    如果讀取資料。

    將預分析資料和分析的資料分配給儲存它們的類 C。

    將類 C 新增到佇列 B。

    分析的資料將顯示到 UI 執行緒中。

    如果未讀取任何資料,請休眠一定時間。

    4. 執行緒 C 迴圈從佇列 B 讀取資料。

    如果讀取資料,則儲存資料。

    如果未讀取任何資料,請休眠一定時間。

    5. 執行緒 D 可以避免,但假設資料處理時間過長,佇列長度會繼續增長,因此執行緒 D 可以迴圈確定佇列 A 和佇列 B 的長度。 假設佇列中的物件數超過某個閾值,則執行一些處理。 例如,終止程式,例如跳過某些資料,例如停止接收資料等。

  4. 匿名使用者2024-01-28

    我不明白你想解決什麼問題......

    僅僅只有乙個儲存執行緒似乎是不夠的,資料庫很可能是乙個瓶頸。

  5. 匿名使用者2024-01-27

    1) [異常原因]。

    根據你給出的**,問題出在公共監聽上:這個屬性方法在列表例項的執行過程中使用 lock()

    實體物件(集合)的列表。

    類 EntityList : IENUMERABLE}public void Remove()} 具有同步功能的集合遍歷介面。

    public ienumeratorgetenumerator()}

相關回答
10個回答2024-07-26

執行此操作的簡單方法是終止當前執行緒。 >>>More

14個回答2024-07-26

簡單的方法是設定乙個關鍵變數,執行緒在執行時檢測這個變數的值,如果變數的值為false,則表示執行緒暫停,讓執行緒繼續休眠,可以根據自己的需要設定休眠間隔值。 比較複雜的是執行緒間通訊來控制,我想大家已經看過很多了,我就不多說了。網上有很多例子。 >>>More

16個回答2024-07-26

其中,可以使用 threadid 來確定執行緒操作的資料 ID,可以使用範圍內的資料。 例如,threadid=1 操作資料庫 ID 1-1000 中的資料,然後在此範圍內執行正常的資料庫操作。 >>>More

7個回答2024-07-26

[1] MyThread 繼承自 Thread 類,但 start 方法被你覆蓋,[2] 呼叫你覆蓋的 start() 方法,所以它不會生成執行緒,也不會被呼叫。 >>>More

7個回答2024-07-26

;您只能放棄使用CPU的權利。