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的权利。