Re:Java at 30: The Genius Behind the Code That Changed Tech
by saagarjha on Saturday May 17, 2025 @02:30AM
(#44012415)
Actors are implemented using locks.
[ Parent
| on HN ]
Re:Java at 30: The Genius Behind the Code That Changed Tech
by pimeys on Saturday May 17, 2025 @04:45AM
(#44012956)
Is it really so? I haven't checked all the implementations, but my take here would be to use a channel with atomics instead of a lock...
Re:Java at 30: The Genius Behind the Code That Changed Tech
by saagarjha on Saturday May 17, 2025 @05:15AM
(#44013079)
It's probably possible to do if you think about it carefully but generally enqueuing a message is going to take a lock, especially if you can send an arbitrary number of messages (which may require the queue to be reallocated).
Re:Java at 30: The Genius Behind the Code That Changed Tech
by pimeys on Saturday May 17, 2025 @07:13AM
(#44013463)
One very common queue implementation you can use to implement actors is the crossbeam-deque. It's work-stealing in nature, works in multi-threaded environments and has no locks. The implementation is quite simple to follow:
https://github.com/crossbeam-rs/crossbeam/blob/master/crossb...
Re:Java at 30: The Genius Behind the Code That Changed Tech
by surajrmal on Saturday May 17, 2025 @11:25AM
(#44014986)
Note that the mpsc queue in the rust stdlib is also a clone of crossbeam and therefore also lockless.
Re:Java at 30: The Genius Behind the Code That Changed Tech
by saagarjha on Sunday May 18, 2025 @04:59AM
(#44019974)
Oh, interesting. Ok I take back my claim then.
Re:Java at 30: The Genius Behind the Code That Changed Tech
by yubblegum on Sunday May 18, 2025 @11:00AM
(#44021874)
> One very common queue implementation you can use to implement actors is the crossbeam-deque
I can't find any references to a "crossbeam dequeue" outside of Rust sources. Is this a neologism for a "very common" pattern, or just very common in Rust?
Re:Java at 30: The Genius Behind the Code That Changed Tech
by steveklabnik on Sunday May 18, 2025 @12:26PM
(#44022476)
crossbeam is a package name. It would be like googling “Nokogiri XML” and only getting Ruby results.
The generic name is just Deque. https://en.wikipedia.org/wiki/Double-ended_queue