{"id":29482233,"url":"https://github.com/jnhu76/cpp_sieve","last_synced_at":"2025-10-10T03:36:07.976Z","repository":{"id":303953043,"uuid":"1017270127","full_name":"jnhu76/CPP_Sieve","owner":"jnhu76","description":"Modern C++ concurrency benchmark (std::thread, std::atomic) inspired by the classic paper 'Threads Cannot be Implemented as a Library'.","archived":false,"fork":false,"pushed_at":"2025-07-10T09:52:54.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-10T17:45:14.490Z","etag":null,"topics":["concurrency","cpp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jnhu76.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-10T09:25:14.000Z","updated_at":"2025-07-10T09:52:58.000Z","dependencies_parsed_at":"2025-07-10T17:52:11.337Z","dependency_job_id":"fd23b2b1-d2a8-4cde-b2ed-4032b2aaa8a2","html_url":"https://github.com/jnhu76/CPP_Sieve","commit_stats":null,"previous_names":["jnhu76/cpp_sieve"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jnhu76/CPP_Sieve","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnhu76%2FCPP_Sieve","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnhu76%2FCPP_Sieve/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnhu76%2FCPP_Sieve/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnhu76%2FCPP_Sieve/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jnhu76","download_url":"https://codeload.github.com/jnhu76/CPP_Sieve/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnhu76%2FCPP_Sieve/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002621,"owners_count":26083425,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concurrency","cpp"],"created_at":"2025-07-15T01:31:36.028Z","updated_at":"2025-10-10T03:36:07.962Z","avatar_url":"https://github.com/jnhu76.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Threads Cannot be Implemented as a Library\n\n本项目是对 Hans-J. Boehm 于2004年发表的经典论文《Threads Cannot be Implemented as a Library》中核心基准测试的现代C++实现。\n\n论文当年的核心论点是：在没有语言层面支持的情况下，纯粹通过库（如 Pthreads）来实现多线程是存在根本性缺陷的。编译器在不知晓并发语义的情况下进行的优化，可能导致难以察觉且致命的程序错误。\n\n本项目旨在：\n\n1. 重现论文中的“埃拉托斯特尼筛法”并行实验。\n\n2. 展示如何使用现代C++标准库（`std::thread`, `std::mutex`, `std::atomic`）来安全、正确地实现不同的并发策略。\n\n✨ 功能特性\n\n1. `mutex`: 使用 `std::mutex` 进行传统的锁保护。\n2. `spinlock`: 使用 `std::atomic_flag` 实现一个简单的自旋锁。\n3. `atomic`: 使用 `std::atomic` 进行无锁（Lock-Free）操作，这在现代C++中是安全且高效的。\n4. `unsafe`: 不使用任何同步措施，故意造成数据竞争（Data Race）作为性能基准。\n\n使用方法：\n\n```bash\n./sieve_experiment \u003c线程数\u003e \u003c版本\u003e\n```\n\nversion：\n\n- `mutex`\n- `spinlock`\n- `atomic`\n- `unsafe`\n\n本项目的核心是 `.github/workflows/benchmark.yml` 中定义的工作流测试代码。\n\n本项目采用 MIT 许可证。详情请见 `LICENSE` 文件。\n\n感谢Hans-J. Boehm撰写了这篇富有洞察力的论文《Threads Cannot be Implemented as a Library》，它深刻地影响了C++等系统级编程语言的发展。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjnhu76%2Fcpp_sieve","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjnhu76%2Fcpp_sieve","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjnhu76%2Fcpp_sieve/lists"}