Jack Mordaunt
7f9589922d
core/sync.select_raw: return a useful index
...
This fixes a flaw in the original implementation: the returned index is
actually useless to the caller.
This is because the index returned refers to the internal "candidate"
list. This list is dynamic, and may not have all of the input channels
(if they weren't ready according to chan.can_{recv,send}). That means
the index is not guaranteed to mean anything to the caller.
The fix introduced here is to return the index into the input slice
(recvs,sends) and an enum to specify which input slice that is.
If no selection was made, then (-1, .None) is returned to communicate as
much.
Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com >
2025-06-12 16:14:51 -03:00
Feoramund
8cde9dce47
Rewrite Atomic_RW_Mutex
...
This patch simplifies the implementation and fixes #5254 .
Previously, the mutex was set up as if there could be multiple writers,
and there seemed to be some confusion as to which `Writer` bits to
check, as not all were checked or set at the same time.
This could also result in the mutex being left in a non-zero state even
after unlocking all locks.
All unneeded state has been removed and extra checks have been put in
place.
2025-06-03 09:07:38 -04:00
fusion32
bd4afafc66
make once_do_without_data_contextless actually contextless
2025-04-16 12:44:00 -03:00
Robin Bergewski
1c6958d443
core:sync/chan: maintainance and package clarity
...
this deprecates all procedures around 'Raw_Queue' for it to
become package private.
2025-04-13 22:56:40 +02:00
Robin Bergewski
4ec93ffe39
fix indent
2025-04-13 16:40:08 +02:00
Robin Bergewski
ec71a5afb1
fix missing imports
2025-04-13 16:33:25 +02:00
Robin Bergewski
19eb53c321
changes due to review
2025-04-13 15:34:14 +02:00
Robin Bergewski
ca72aba9eb
core:sync/chan: add package documentation
2025-04-13 15:07:06 +02:00
flysand7
9da144157e
[sync]: Fix typos in comments and remove my note.
2025-01-16 19:33:09 +03:00
avanspector
a6dccf5e98
Haiku: fix futex bug
2025-01-10 06:28:57 +01:00
avanspector
5376d2a20b
fix haiku
2024-12-20 17:19:04 +01:00
Laytan Laats
f1cae8d844
fix #4496 - allow unlock of unlocked mutex (making it consistent with windows behaviour)
2024-12-06 23:08:47 +01:00
Laytan Laats
cf53404f5f
sync: fix no new values
2024-12-05 20:05:19 +01:00
Laytan Laats
ac3a87c2cf
sync: fix require results
2024-12-05 19:04:45 +01:00
Laytan Laats
ad438f418d
sync: fix futexes on wasm
2024-12-05 19:00:45 +01:00
Karl Zylinski
093ade0504
Merge branch 'master' into file-tags-without-comments
2024-09-17 19:36:17 +02:00
Laytan Laats
0975820c48
fix wrong ulock timeout calculation, add version check for ios
2024-09-17 15:52:35 +02:00
pkova
6e0f1cc866
Pass microseconds instead of nanoseconds to __ulock_wait
2024-09-17 02:35:00 +03:00
Pyry Kovanen
4d6f7dcac0
Fix code alignment in futex_darwin.odin
...
Co-authored-by: Feoramund <161657516+Feoramund@users.noreply.github.com >
2024-09-17 02:21:00 +03:00
pkova
fff99c726e
Fix core sync test deadlock on darwin
2024-09-17 01:52:51 +03:00
Feoramund
d38f5ffb49
Remove unneeded synchronizations in Chan
...
Everything was already guarded by `c.mutex`.
2024-09-15 22:59:30 -04:00
Karl Zylinski
19f0127e55
Moved all packages in core, base, vendor, tests and examples to use new #+ file tag syntax.
2024-09-14 18:27:49 +02:00
Feoramund
16cd16b91e
Fix comments
2024-09-11 08:39:23 -04:00
Feoramund
b1db33b519
Add cpu_relax to sync.auto_reset_event_signal
2024-09-11 08:39:23 -04:00
Feoramund
a1435a6a90
Fix deadlock in Auto_Reset_Event
2024-09-11 08:39:23 -04:00
Feoramund
fec1ccd7a3
Fix data races in sync.Recursive_Benaphore
2024-09-11 08:39:23 -04:00
Feoramund
b2c2235e58
Fix recursive_benaphore_try_lock
...
Previously, if the owner called this, it would fail.
2024-09-10 14:52:20 -04:00
Feoramund
8a14a656fb
Fix chan.can_send for unbuffered channels
...
`w_waiting` is the signal that says a caller is waiting to be able to
send something. It is incremented upon send and - in the case of an
unbuffered channel - it can only hold one message.
Therefore, check that `w_waiting` is zero instead.
2024-09-10 14:52:20 -04:00
Feoramund
e9a6a34480
Forbid chan.try_send on closed buffered channels
2024-09-10 14:52:20 -04:00
Feoramund
026aef69e3
Fix deadlock on sending to full, buffered, closed Chan
...
This will also keep messages from being sent to closed, buffered
channels in general.
2024-09-10 14:52:20 -04:00
Feoramund
73f5ab473c
Keep chan.can_recv from deadlocking
2024-09-10 14:52:20 -04:00
Feoramund
0a594147af
Use contextless procs in core:sync instead
2024-09-10 14:52:20 -04:00
Feoramund
dbb783fbf2
Fix atomic memory order for sync.ticket_mutex_unlock
2024-09-09 16:19:15 -04:00
Feoramund
cbd4d5e765
Fix data race in atomic_sema_wait_with_timeout
2024-09-09 16:19:14 -04:00
Feoramund
9d6f71fd2e
Fix sync.Benaphore
...
The calls to `atomic_add*` return the value before adding, not after, so
the previous code was causing the occasional data race.
2024-09-09 16:19:14 -04:00
Laytan Laats
75dd562a0a
fix #4219 - recursive mutex lock
2024-09-08 22:23:03 +02:00
gingerBill
e72d0ba804
Move around mutex guard
2024-09-08 14:11:05 +01:00
Laytan Laats
288312a812
core: improve package doc comments for the documentation generator
2024-09-03 19:59:04 +02:00
pkova
5b9b21e756
Fix thread sanitizer errors surfaced by tests/core/io
2024-09-03 16:30:51 +03:00
Jeroen van Rijn
cc24d2de3e
Merge pull request #3810 from Feoramund/freebsd-core-net
...
Port `core:net` to FreeBSD
2024-08-09 09:50:05 +02:00
gingerBill
e60951a902
Begin converting os.Errno to be a nil-able type as a transition period
2024-08-04 10:51:08 +01:00
flysand7
3aac4b1a3e
[sync]: Document all procedures
2024-07-30 19:13:35 +11:00
gingerBill
e296d6fb90
Fix loads of indentation issues with mixing spaces and tabs
2024-06-29 19:50:51 +01:00
Feoramund
10ce76fcc2
Fix FreeBSD futex implementation
...
- Add missing size of timeout struct to `_umtx_op`.
- Use `WAIT_UINT` not `WAIT`, as the expected value is an unsigned integer.
- Use new native calls instead of libc.
2024-06-26 10:02:07 -04:00
gingerBill
5dc98336a8
Merge pull request #3524 from Feoramund/freebsd-amd64-syscall-errno
...
Add `intrinsics.syscall_bsd`
2024-06-20 11:47:01 +01:00
gingerBill
2380720fa2
Fix core:sync/chan for rand
2024-06-15 15:46:48 +01:00
Feoramund
1128bd1d7f
Use syscall_bsd on NetBSD
2024-06-12 13:34:36 -04:00
Laytan Laats
b35e72c82b
core/sync: fix wrong timeout calculation, time.Duration is ns already
2024-06-07 20:27:33 +02:00
Andreas T Jonsson
ed6667ebf2
Propper thread identification on NetBSD
2024-06-05 11:06:14 +02:00
Andreas T Jonsson
b72c2edabb
Merge branch 'master' into netbsd
2024-05-10 09:04:52 +02:00