Thomas Haller
0c06a4b7a0
glib: add internal g_datalist_id_update_atomic() function
...
GDataSet is mainly used by GObject. Usually, when we access the private
data there, we already hold another lock around the GObject.
For example, before accessing quark_toggle_refs, we take a
OPTIONAL_BIT_LOCK_TOGGLE_REFS lock. That makes sense, because we anyway
need to protect access to the ToggleRefStack. By holding such an
external mutex around several GData operations, we achieve atomic
updates.
However, there is a (performance) use case to update the qdata
atomically, without such additional lock. The GData already holds a lock
while updating the data. Add a new g_datalist_id_update_atomic()
function, that can invoke a callback while holding that lock.
This will be used by GObject. The benefit is that we can access the
GData atomically, without requiring another mutex around it.
For example, a common pattern is to request some GData entry, and if
it's not yet allocated, to allocate it. This requires to take the GData
bitlock twice. With this API, the callback can allocate the data if no
entry exists yet.
2024-01-31 17:30:28 +01:00
..
2024-01-15 12:39:36 +00:00
2021-04-19 19:23:10 +01:00
2019-01-15 15:11:43 +00:00
2022-10-31 12:00:53 +01:00
2022-10-13 20:53:56 -04:00
2024-01-31 17:30:28 +01:00
2024-01-09 08:55:32 -08:00
2022-05-18 09:19:02 +01:00
2023-10-11 14:01:28 +01:00
2023-11-29 12:01:12 +00:00
2023-01-06 12:09:37 +00:00
2023-11-29 11:59:47 +00:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2023-10-10 08:30:46 -07:00
2023-03-23 14:11:36 +00:00
2022-11-07 11:30:32 +00:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2024-01-16 12:50:31 +01:00
2024-01-16 12:50:31 +01:00
2023-10-11 17:38:30 +01:00
2023-10-11 17:38:30 +01:00
2018-06-02 09:45:55 +02:00
2023-05-16 11:27:45 +01:00
2022-05-18 09:19:02 +01:00
2023-10-04 13:57:16 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-11-02 16:30:23 +00:00
2023-11-02 16:30:23 +00:00
2023-10-03 10:00:44 +00:00
2023-10-03 10:26:10 +02:00
2023-10-11 14:01:28 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2024-01-31 17:30:28 +01:00
2022-05-23 09:19:45 -04:00
2024-01-31 17:30:28 +01:00
2023-11-28 19:32:03 +00:00
2023-10-11 17:38:31 +01:00
2023-11-28 23:14:40 +00:00
2023-11-28 23:13:27 +00:00
2024-01-15 14:18:40 +00:00
2023-12-20 07:48:10 -05:00
2023-11-23 12:34:39 +00:00
2023-11-23 12:34:39 +00:00
2023-10-17 22:59:27 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-12-14 01:26:42 +00:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2023-10-11 14:01:29 +01:00
2022-05-18 09:19:02 +01:00
2023-12-04 09:53:35 +00:00
2022-12-16 18:45:36 +01:00
2023-11-15 11:09:39 +00:00
2023-11-15 11:09:39 +00:00
2023-11-29 11:59:47 +00:00
2023-01-09 13:09:26 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-11-15 11:09:39 +00:00
2023-01-09 13:09:26 +01:00
2023-05-18 11:26:33 +02:00
2023-10-12 11:44:48 +02:00
2022-07-25 01:00:54 +02:00
2022-07-25 01:00:54 +02:00
2023-10-23 10:25:31 +01:00
2022-05-18 09:19:02 +01:00
2023-09-04 11:29:57 +00:00
2023-07-21 18:40:13 +01:00
2022-05-18 09:19:02 +01:00
2023-10-23 10:25:30 +01:00
2023-10-03 10:26:10 +02:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2024-01-31 17:30:28 +01:00
2024-01-31 17:30:28 +01:00
2022-11-22 17:23:12 +01:00
2023-11-28 13:52:05 +00:00
2023-10-09 22:18:18 +01:00
2023-03-23 14:11:36 +00:00
2023-02-09 13:36:51 +00:00
2018-01-04 22:19:30 +01:00
2023-07-21 18:40:13 +01:00
2023-05-30 13:45:05 +01:00
2013-01-13 13:11:57 -05:00
2023-11-29 11:59:47 +00:00
2022-05-18 09:19:02 +01:00
2023-10-27 17:19:08 +02:00
2022-05-18 09:19:02 +01:00
2023-11-06 15:05:43 +00:00
2023-05-10 10:56:44 +07:00
2023-02-21 12:42:55 +00:00
2022-05-18 09:19:02 +01:00
2023-11-29 12:03:15 +00:00
2022-07-25 22:30:22 +01:00
2023-11-28 13:52:05 +00:00
2023-05-30 13:45:05 +01:00
2024-01-16 08:59:32 +00:00
2024-01-05 21:39:25 +01:00
2021-09-21 09:41:29 +00:00
2023-11-29 11:59:47 +00:00
2023-01-09 13:09:26 +01:00
2023-11-21 12:55:55 +00:00
2023-08-21 11:34:27 +01:00
2021-11-18 14:32:09 +00:00
2023-10-11 17:38:31 +01:00
2023-10-11 17:38:31 +01:00
2023-10-23 10:25:31 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-11-29 11:59:47 +00:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2023-11-29 11:59:47 +00:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2023-10-11 14:01:28 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-10-11 14:01:28 +01:00
2023-04-24 12:48:32 +01:00
2023-10-11 17:38:30 +01:00
2022-05-18 09:19:02 +01:00
2023-12-18 11:23:56 +00:00
2023-10-11 17:38:31 +01:00
2023-11-29 11:59:47 +00:00
2022-05-18 09:19:02 +01:00
2023-10-17 22:59:27 +01:00
2023-11-29 11:59:47 +00:00
2023-01-09 13:09:26 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2023-10-11 14:01:29 +01:00
2022-05-18 09:19:02 +01:00
2023-11-29 11:59:47 +00:00
2022-05-18 09:19:02 +01:00
2022-12-12 11:28:58 +04:00
2022-11-03 00:11:45 +08:00
2023-04-14 17:15:28 +01:00
2023-11-28 13:52:05 +00:00
2023-01-09 14:12:16 +01:00
2022-05-18 09:19:02 +01:00
2023-05-31 16:34:16 +01:00
2023-11-23 12:34:39 +00:00
2022-11-07 13:01:47 +00:00
2023-11-28 13:52:05 +00:00
2024-01-09 16:37:51 +01:00
2023-11-27 12:20:50 +00:00
2023-05-16 11:27:45 +01:00
2023-10-23 10:25:31 +01:00
2022-05-18 09:19:02 +01:00
2023-10-15 15:45:58 +02:00
2023-10-15 15:45:58 +02:00
2020-06-12 15:01:08 +01:00
2023-08-16 14:31:40 +01:00
2023-11-23 12:18:21 +00:00
2023-11-23 12:18:21 +00:00
2023-07-21 17:12:01 +01:00
2023-10-04 08:19:57 +00:00
2023-12-22 16:11:45 +00:00
2023-10-04 13:57:16 +01:00
2023-10-23 10:25:31 +01:00
2022-05-18 09:19:02 +01:00
2023-09-01 23:49:25 -07:00
2023-10-11 17:38:31 +01:00
2022-05-18 09:19:02 +01:00
2023-10-23 10:25:31 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2014-02-20 18:27:24 -05:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2023-11-29 11:59:47 +00:00
2023-01-09 13:23:32 +01:00
2023-05-10 10:56:44 +07:00
2022-05-18 09:19:02 +01:00
2023-10-17 22:59:27 +01:00
2023-10-17 22:59:27 +01:00
2023-10-17 22:45:55 +01:00
2022-05-18 09:19:02 +01:00
2023-11-26 22:41:26 +00:00
2023-10-17 22:59:27 +01:00
2023-10-11 17:38:31 +01:00
2023-10-17 22:59:27 +01:00
2023-09-11 22:50:05 -07:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-05-25 00:36:56 +02:00
2023-11-28 13:52:05 +00:00
2022-11-22 17:23:13 +01:00
2023-11-08 16:36:14 +01:00
2023-11-28 13:52:05 +00:00
2017-02-06 14:40:38 +01:00
2022-05-18 09:19:02 +01:00
2024-01-16 11:04:44 +00:00
2022-12-13 18:15:19 +00:00
2022-05-18 09:19:02 +01:00
2024-01-15 14:39:46 +00:00
2022-12-21 19:50:19 +00:00
2022-12-13 18:15:19 +00:00
2023-11-28 13:52:05 +00:00
2023-02-10 18:22:20 +00:00
2023-11-28 13:52:05 +00:00
2023-11-29 12:03:34 +00:00
2023-07-21 18:40:13 +01:00
2022-05-18 09:19:02 +01:00
2023-11-28 13:52:05 +00:00
2022-05-18 09:19:02 +01:00
2022-10-13 20:53:56 -04:00
2023-10-11 17:38:31 +01:00
2022-05-18 09:19:02 +01:00
2022-05-18 09:19:02 +01:00
2023-05-10 10:56:44 +07:00
2023-11-23 16:18:47 +00:00
2016-05-23 10:52:10 -04:00
2023-11-28 19:32:02 +00:00
2023-03-21 14:21:18 +00:00
2020-11-17 15:50:07 +00:00
2023-10-16 15:02:03 +02:00
2023-08-01 15:33:21 -03:00