On Do, 05.09.19 10:46, Stephen Hemminger (step...@networkplumber.org) wrote:

> The libsystemd bus event loop is:
>
>
>         while (e->state != SD_EVENT_FINISHED) {
>                 r = sd_event_run(e, (uint64_t) -1);
>
> But since e->state is changed by another thread it
> should be marked volatile to avoid compiler thinking
> the state doesn't get changed.

None of systemd's libraries are thread safe. They are written in a
threads-aware style though. This means you should only use a specific
context object from a single thread at a time, and need to do your own
locking around it if that single thread shall change all the
time. systemd doesn't keep global state generally, which means doing
your own locking around the sd_xyz objects should suffice and work
reasonably well.

Lennart

--
Lennart Poettering, Berlin
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to