├── .github ├── cereggii.jpg ├── dependabot.yml └── workflows │ ├── lint.yml │ ├── publish-docs.yml │ ├── publish-pypi.yml │ ├── tests.yml │ ├── tsan.yml │ └── wheels.yml ├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── README.md ├── docs ├── api │ ├── AtomicDict.md │ ├── AtomicInt64.md │ ├── AtomicRef.md │ ├── CountDownLatch.md │ ├── ThreadHandle.md │ └── ThreadSet.md ├── blog │ └── index.md ├── concurrency-101 │ ├── index.md │ ├── low-safety.md │ ├── performance.md │ ├── progress-guarantees.md │ ├── pymutex │ │ ├── index.md │ │ └── test-and-set.md │ └── safety.md ├── examples │ └── AtomicDict │ │ ├── reduce-average.md │ │ └── reduce.md └── index.md ├── examples ├── atomic_dict │ ├── count_keys.py │ ├── large_grow.py │ ├── partitioned_iter.py │ ├── reduce_avg.py │ └── reduce_sum.py └── atomic_int │ └── counter.py ├── mkdocs.yml ├── pyproject.toml ├── src ├── CMakeLists.txt ├── cereggii │ ├── __about__.py │ ├── __init__.py │ ├── _cereggii.pyi │ ├── atomic_dict │ │ ├── __init__.py │ │ ├── accessor_storage.c │ │ ├── atomic_dict.c │ │ ├── blocks.c │ │ ├── delete.c │ │ ├── insert.c │ │ ├── iter.c │ │ ├── lookup.c │ │ ├── meta.c │ │ ├── migrate.c │ │ └── node_ops.c │ ├── atomic_event.c │ ├── atomic_event.py │ ├── atomic_int.c │ ├── atomic_int.py │ ├── atomic_ops.c │ ├── atomic_ref.c │ ├── atomic_ref.py │ ├── cereggii.c │ ├── constants.c │ ├── constants.py │ ├── count_down_latch.py │ ├── thread_handle.c │ ├── thread_handle.py │ └── thread_set.py ├── cereggiiconfig.h.in └── include │ ├── _internal_py_core.h │ ├── atomic_dict.h │ ├── atomic_dict_internal.h │ ├── atomic_event.h │ ├── atomic_int.h │ ├── atomic_int_internal.h │ ├── atomic_ops.h │ ├── atomic_ref.h │ ├── constants.h │ ├── internal │ └── misc.h │ ├── thread_handle.h │ └── thread_id.h ├── tests ├── .gitignore ├── __init__.py ├── atomic_dict_hashing_utils.py ├── test_atomic_dict.py ├── test_atomic_int.py ├── test_atomic_ref.py ├── test_basics.py ├── test_constants.py ├── test_count_down_latch.py ├── test_testing_thread_set.py ├── test_thread_handle.py ├── test_thread_set.py └── utils.py └── tools └── tsan └── suppressions.txt /.github/cereggii.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/cereggii.jpg -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/workflows/lint.yml -------------------------------------------------------------------------------- /.github/workflows/publish-docs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/workflows/publish-docs.yml -------------------------------------------------------------------------------- /.github/workflows/publish-pypi.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/workflows/publish-pypi.yml -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/workflows/tests.yml -------------------------------------------------------------------------------- /.github/workflows/tsan.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/workflows/tsan.yml -------------------------------------------------------------------------------- /.github/workflows/wheels.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.github/workflows/wheels.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/.gitignore -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.18) 2 | project(cereggii) 3 | 4 | 5 | add_subdirectory(src) 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/README.md -------------------------------------------------------------------------------- /docs/api/AtomicDict.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/api/AtomicDict.md -------------------------------------------------------------------------------- /docs/api/AtomicInt64.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/api/AtomicInt64.md -------------------------------------------------------------------------------- /docs/api/AtomicRef.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/api/AtomicRef.md -------------------------------------------------------------------------------- /docs/api/CountDownLatch.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/api/CountDownLatch.md -------------------------------------------------------------------------------- /docs/api/ThreadHandle.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/api/ThreadHandle.md -------------------------------------------------------------------------------- /docs/api/ThreadSet.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/api/ThreadSet.md -------------------------------------------------------------------------------- /docs/blog/index.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/concurrency-101/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/concurrency-101/index.md -------------------------------------------------------------------------------- /docs/concurrency-101/low-safety.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/concurrency-101/low-safety.md -------------------------------------------------------------------------------- /docs/concurrency-101/performance.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/concurrency-101/performance.md -------------------------------------------------------------------------------- /docs/concurrency-101/progress-guarantees.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/concurrency-101/progress-guarantees.md -------------------------------------------------------------------------------- /docs/concurrency-101/pymutex/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/concurrency-101/pymutex/index.md -------------------------------------------------------------------------------- /docs/concurrency-101/pymutex/test-and-set.md: -------------------------------------------------------------------------------- 1 | # Simple Locks: TAS vs TTAS 2 | 3 | -------------------------------------------------------------------------------- /docs/concurrency-101/safety.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/concurrency-101/safety.md -------------------------------------------------------------------------------- /docs/examples/AtomicDict/reduce-average.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/examples/AtomicDict/reduce-average.md -------------------------------------------------------------------------------- /docs/examples/AtomicDict/reduce.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/examples/AtomicDict/reduce.md -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/docs/index.md -------------------------------------------------------------------------------- /examples/atomic_dict/count_keys.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/examples/atomic_dict/count_keys.py -------------------------------------------------------------------------------- /examples/atomic_dict/large_grow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/examples/atomic_dict/large_grow.py -------------------------------------------------------------------------------- /examples/atomic_dict/partitioned_iter.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/examples/atomic_dict/partitioned_iter.py -------------------------------------------------------------------------------- /examples/atomic_dict/reduce_avg.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/examples/atomic_dict/reduce_avg.py -------------------------------------------------------------------------------- /examples/atomic_dict/reduce_sum.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/examples/atomic_dict/reduce_sum.py -------------------------------------------------------------------------------- /examples/atomic_int/counter.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/examples/atomic_int/counter.py -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/mkdocs.yml -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/pyproject.toml -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/CMakeLists.txt -------------------------------------------------------------------------------- /src/cereggii/__about__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/__about__.py -------------------------------------------------------------------------------- /src/cereggii/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/__init__.py -------------------------------------------------------------------------------- /src/cereggii/_cereggii.pyi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/_cereggii.pyi -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/__init__.py -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/accessor_storage.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/accessor_storage.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/atomic_dict.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/atomic_dict.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/blocks.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/blocks.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/delete.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/delete.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/insert.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/insert.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/iter.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/iter.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/lookup.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/lookup.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/meta.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/meta.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/migrate.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/migrate.c -------------------------------------------------------------------------------- /src/cereggii/atomic_dict/node_ops.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_dict/node_ops.c -------------------------------------------------------------------------------- /src/cereggii/atomic_event.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_event.c -------------------------------------------------------------------------------- /src/cereggii/atomic_event.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_event.py -------------------------------------------------------------------------------- /src/cereggii/atomic_int.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_int.c -------------------------------------------------------------------------------- /src/cereggii/atomic_int.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_int.py -------------------------------------------------------------------------------- /src/cereggii/atomic_ops.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_ops.c -------------------------------------------------------------------------------- /src/cereggii/atomic_ref.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_ref.c -------------------------------------------------------------------------------- /src/cereggii/atomic_ref.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/atomic_ref.py -------------------------------------------------------------------------------- /src/cereggii/cereggii.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/cereggii.c -------------------------------------------------------------------------------- /src/cereggii/constants.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/constants.c -------------------------------------------------------------------------------- /src/cereggii/constants.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/constants.py -------------------------------------------------------------------------------- /src/cereggii/count_down_latch.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/count_down_latch.py -------------------------------------------------------------------------------- /src/cereggii/thread_handle.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/thread_handle.c -------------------------------------------------------------------------------- /src/cereggii/thread_handle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/thread_handle.py -------------------------------------------------------------------------------- /src/cereggii/thread_set.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggii/thread_set.py -------------------------------------------------------------------------------- /src/cereggiiconfig.h.in: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/cereggiiconfig.h.in -------------------------------------------------------------------------------- /src/include/_internal_py_core.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/_internal_py_core.h -------------------------------------------------------------------------------- /src/include/atomic_dict.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/atomic_dict.h -------------------------------------------------------------------------------- /src/include/atomic_dict_internal.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/atomic_dict_internal.h -------------------------------------------------------------------------------- /src/include/atomic_event.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/atomic_event.h -------------------------------------------------------------------------------- /src/include/atomic_int.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/atomic_int.h -------------------------------------------------------------------------------- /src/include/atomic_int_internal.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/atomic_int_internal.h -------------------------------------------------------------------------------- /src/include/atomic_ops.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/atomic_ops.h -------------------------------------------------------------------------------- /src/include/atomic_ref.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/atomic_ref.h -------------------------------------------------------------------------------- /src/include/constants.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/constants.h -------------------------------------------------------------------------------- /src/include/internal/misc.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/internal/misc.h -------------------------------------------------------------------------------- /src/include/thread_handle.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/thread_handle.h -------------------------------------------------------------------------------- /src/include/thread_id.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/src/include/thread_id.h -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/.gitignore -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/__init__.py -------------------------------------------------------------------------------- /tests/atomic_dict_hashing_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/atomic_dict_hashing_utils.py -------------------------------------------------------------------------------- /tests/test_atomic_dict.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_atomic_dict.py -------------------------------------------------------------------------------- /tests/test_atomic_int.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_atomic_int.py -------------------------------------------------------------------------------- /tests/test_atomic_ref.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_atomic_ref.py -------------------------------------------------------------------------------- /tests/test_basics.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_basics.py -------------------------------------------------------------------------------- /tests/test_constants.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_constants.py -------------------------------------------------------------------------------- /tests/test_count_down_latch.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_count_down_latch.py -------------------------------------------------------------------------------- /tests/test_testing_thread_set.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_testing_thread_set.py -------------------------------------------------------------------------------- /tests/test_thread_handle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_thread_handle.py -------------------------------------------------------------------------------- /tests/test_thread_set.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/test_thread_set.py -------------------------------------------------------------------------------- /tests/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tests/utils.py -------------------------------------------------------------------------------- /tools/tsan/suppressions.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpdani/cereggii/HEAD/tools/tsan/suppressions.txt --------------------------------------------------------------------------------