gpt4 book ai didi

delphi - 通过线程读取数据的关键部分

转载 作者:行者123 更新时间:2023-12-03 18:27:26 24 4
gpt4 key购买 nike

我有两个不同的线程(在主线程旁边)。

第一个将数据发送到主线程PostMessage。作为接收消息的结果,主线程修改了相应的全局变量(不同类型)。

另一个线程(第二个线程)定期读取这些变量。

在这种情况下(在主线程和第二个线程中)是否需要使用关键部分来确保安全?

最佳答案

如果使用关键部分(锁定)保护对共享变量的所有访问,则代码将是安全的。

但是,如果变量正确对齐,不存储引用,且指针大小不超过指针,则可以避免使用锁。

例如,如果您有一个包含计数的整数,则无需使用锁。您的书写线程可以安全地进行修改,而阅读线程永远不会遭受撕裂。如果您有多个写入线程,则可能需要使用锁或互锁函数。

如果您的变量是引用,那么您可能需要使用锁。如果您有多个构成复合变量的变量,那么再次需要锁。

对齐的重要性在于,如果变量未对齐,则变量的写入可能不是原子的。该变量可以分为两部分。因此,读取线程可以读取处于部分更新状态的变量。始终对齐变量。如果您不打包记录和类,则变量将对齐。

最终我不能确定您的代码是否安全,因为您没有显示它。到目前为止,仅对代码的描述。您确实应该针对这样的问题发布代码。

关于delphi - 通过线程读取数据的关键部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16494653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com