···4848 :ordered_set,
4949 :public,
5050 {:read_concurrency, true},
5151- {:write_concurrency, false} # Single writer (GenServer) is fine
5151+ # Single writer (GenServer) is fine
5252+ {:write_concurrency, false}
5253 ]
53545455 table_name = Keyword.get(opts, :name, __MODULE__)
···83848485 # Atomically reserve a range of sequence numbers
8586 start_seq = :atomics.add_get(counter, 1, count)
8686- start_seq = start_seq - count + 1 # Adjust to get first number in range
8787+ # Adjust to get first number in range
8888+ start_seq = start_seq - count + 1
87898890 # Build list of {key, value} tuples
8991 records =
···180182 case :ets.take(table, key) do
181183 [{^key, item}] ->
182184 # Successfully took item, get next key and continue
183183- next_key = :ets.first(table) # After take, first is now the next item
185185+ # After take, first is now the next item
186186+ next_key = :ets.first(table)
184187 dequeue_loop(table, count - 1, next_key, [item | acc])
185188186189 [] ->
+13-11
apps/nix/test/nix/eval/queue_test.exs
···232232 Queue.enqueue(table, counter, Enum.to_list(1..100))
233233234234 # Spawn multiple processes to read size
235235- tasks = for _ <- 1..10 do
236236- Task.async(fn ->
237237- Queue.size(table)
238238- end)
239239- end
235235+ tasks =
236236+ for _ <- 1..10 do
237237+ Task.async(fn ->
238238+ Queue.size(table)
239239+ end)
240240+ end
240241241242 results = Task.await_many(tasks)
242243 assert Enum.all?(results, &(&1 == 100))
···249250 # This should complete quickly due to read_concurrency
250251 start = System.monotonic_time(:millisecond)
251252252252- tasks = for _ <- 1..100 do
253253- Task.async(fn ->
254254- Queue.size(table)
255255- Queue.empty?(table)
256256- end)
257257- end
253253+ tasks =
254254+ for _ <- 1..100 do
255255+ Task.async(fn ->
256256+ Queue.size(table)
257257+ Queue.empty?(table)
258258+ end)
259259+ end
258260259261 Task.await_many(tasks)
260262 elapsed = System.monotonic_time(:millisecond) - start