apache / apache/celix

Replace ASF Celix Thread abstraction with libuv

Open
#769 0 comments 0 reactions 1 assignee Claimed by @pnoltes View on GitHub
component/utils kind/api-change kind/feature
Dominant language
C
Stars
193
Forks
99
Avg merge
1m
Merged PRs (30d)
1

Description

# Intro
This ticket focuses on ensuring that ASF Celix's public API uses libuv for thread management and thread-related utilities.

## Steps

- [x] Introduce the libuv dependency

Introduce the libuv dependency in Conan, the ci ubuntu/macos files and the build ASF Celix with brew/apt documentation.

- [x] Add lock guard cleanup helpers

Implement and test C helper macros or functions to provide a lock guard using `__attribute__((cleanup))`. These helpers will manage the automatic unlocking of a mutex or read/write lock when going out of scope.

- [ ] Replace ASF Celix thread usage with libuv's thread abstraction

Replace the current `celix_thread_t`, `celix_thread_once_t` with libuv's thread abstraction (`uv_thread_t`, etc).

- [ ] Replace ASF Celix mutex, cond and rwlock with libuv's condition and mutex abstraction.

Replace the current `celix_thread_mutex_t`, `celix_thread_rwlock_t`, etc with libuv's mutex,cond and rwlock abstraction.

- [ ] Replace celix tss with libuv local thread storage (uv_key_t)

- [ ] Remove `celix_threads.h` header

When usage of ASF Celix threads, mutexes, etc is removed the `celix_threads.h` can also be removed.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.