gpt4 book ai didi

c++ - Qt 中的多线程

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:12 26 4
gpt4 key购买 nike

我正在编写一个小型 GUI 来使用 openSSL 命令行界面加密和解密文件。我需要一个进度条来显示加密/解密大文件时的加密进度。由于我使用 cli 接口(interface),没有中间返回值或其他帮助我解决这个问题,所以我发现了解进度的唯一方法是编写一个多线程程序,其中第一个线程在终端中调用 openSSL

例如

system("openssl aes-256-cbc -in clear_text_file -out encrypted_file")

第二个线程每秒读取输出文件的文件大小,并将其与原始文件大小进行比较,计算进度条值。这里的问题是没有线程同步,所以当 pc 繁忙时,第二个线程通常不会每秒执行一次,而是每隔五六个或更糟糕的是直到第一个线程结束才执行一次,结果是进度条始终保持为零,直到加密过程结束。我还尝试将第一个线程的优先级设置为低,但我没有注意到任何变化(我在 Linux 上使用 Qt5.1,我在某处读到不支持 Linux 中的线程优先级,所以这可能是原因)。

如果这里有人可以建议我一些其他(最好是更好的)方法来实现相同的结果,我将非常感激..

提前谢谢你

最佳答案

您可能需要直接使用 openSSL(或等效)库来获取更精细的进度更新,而不是通过调用单独的进程和轮询文件大小(这只会根据文件刷新的频率进行更新)

关于c++ - Qt 中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18787319/

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