Skip to content

小彭老师《c++中的高性能并行编程与优化》的第5讲作业#50

Open
Paul-Laifan wants to merge 1 commit intoparallel101:mainfrom
Paul-Laifan:main
Open

小彭老师《c++中的高性能并行编程与优化》的第5讲作业#50
Paul-Laifan wants to merge 1 commit intoparallel101:mainfrom
Paul-Laifan:main

Conversation

@Paul-Laifan
Copy link

核心改进说明:

  1. 多线程安全实现 (Thread-Safety):

引入了 std::shared_mutex 对全局数据 users 和 has_login 进行保护。

读写分离优化:在 do_queryuser 函数中使用了 std::shared_lock,允许多个线程同时进行查询操作,极大提高了读密集型场景的并发性能。

在 do_register 和 do_login 中使用了 std::unique_lock,确保在修改用户信息或更新登录状态时,数据的一致性和完整性。

  1. 登录计时器优化 (Chrono Integration):

废弃了不精确且易受系统时间调整影响的 C 语言 time(NULL)。

将 has_login 的值类型改为 std::chrono::steady_clock::time_point。

使用 std::chrono::steady_clock 计算两次登录的时间差,保证了计时的单调递增和高精度,符合现代 C++ 后端开发的标准实践。

  1. 后台任务管理 (Async & Future):

重构了 ThreadPool 类。原代码中直接创建 std::thread 会导致由于对象生命周期结束而触发 std::terminate。

改用 std::async(std::launch::async, ...) 启动异步任务。

通过 std::vector<std::future> 收集任务凭证,并在 main 函数末尾调用 wait_all()(循环调用 .wait()),优雅地实现了“后台执行 + 统一回收”的逻辑。

测试结果:
在并行度为 4096 的高并发压力测试下,程序运行平稳。

输出结果显示,注册、登录及查询逻辑均能正确互斥或并行,未发现由于竞态条件导致的内存错误或逻辑异常。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant