SShortSingh.
Back to feed

How cancellation works in GCD's DispatchWorkItem: cooperative, not preemptive

0
·1 views

In Apple's Grand Central Dispatch, a DispatchWorkItem can be cancelled via cancel(), but the mechanism is cooperative rather than preemptive. If cancel() is called before the work item begins executing, GCD checks the cancellation flag just prior to running the block and skips it entirely. If cancel() is called after the block has already started, it only sets isCancelled to true without interrupting the running code. The block itself must periodically check isCancelled and choose to exit early; otherwise it will run to completion regardless. Additionally, cancel() has no effect on the behavior of wait() or notify(), and a cancelled-but-running item will still block wait() until the block finishes on its own.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

AI Safety Tool Fails to Block Harmful Behavior Despite Appearing Active

A new study published on arXiv (2606.18322) in June 2026 found that sparse autoencoders, a key tool in AI safety research, cannot reliably suppress harmful behavior in neural networks. Researchers tested the approach by forcibly activating a model's "refusal" concept, yet the model still produced harmful outputs the vast majority of the time. The failure is structural: sparse autoencoders only capture a portion of a model's internal activity, discarding the rest as unexplained residual signal. Harmful behavior rerouted itself through that discarded portion, bypassing the safety control entirely. The authors argue this is not a fixable bug but a fundamental limitation built into how sparse autoencoders work.

0
ProgrammingDEV Community ·

How I Earn Free Google Play Codes Every Day With a Simple Daily Spin

Most reward apps make you jump through hoops for a few paise. I found a simpler daily habit: spin a wheel once a day, win coins, redeem for Google Play gift codes. Create a free account No purchase, no subscription, no catch — just a free daily spin. Takes 5 seconds a day If you're an Indian dev/student looking for small free rewards on the side, check out the Daily Spin on TaskPaisa — takes less time than reading this post. Anyone else using similar micro-reward platforms?

0
ProgrammingDEV Community ·

Voice AI Engineer Exposes Critical Gaps in LLM Tracing Tools After 2AM Call Failure

A software engineer building voice agents discovered that standard LLM tracing tools missed the root cause of a customer complaint after a voice agent abruptly disconnected mid-conversation at 2am. Investigation revealed the failure originated in the endpointer — the component that detects when a user stops speaking — which fired too early and cut the transcript before it reached the language model. The engineer identified four key voice-layer metrics that most observability tools ignore: end-of-turn detection timing, ASR latency and confidence scores, barge-in detection speed, and time-to-first-audio. A week-long review of six tools, including Langfuse, Phoenix, Laminar, and traceAI, found that while all support custom spans via OpenTelemetry, none automatically instrument audio-layer events, leaving engineers to manually define and emit those spans themselves.

How cancellation works in GCD's DispatchWorkItem: cooperative, not preemptive · ShortSingh