replace extra gen parameters in artifact creation hook; replace with explicit cancellation signal, passed by caller

This commit is contained in:
Ryan Fleury
2025-09-30 11:01:04 -07:00
parent 45a2137d08
commit bf27344a9b
13 changed files with 170 additions and 33 deletions
+3 -3
View File
@@ -161,8 +161,8 @@ ac_artifact_from_key_(Access *access, String8 key, AC_ArtifactParams *params, U6
}
n->v.key = str8_copy(req_batch->arena, key);
n->v.gen = params->gen;
n->v.last_requested_gen = &node->last_requested_gen;
n->v.create = params->create;
n->v.cancel_signal = params->cancel_signal;
}
cond_var_broadcast(async_tick_start_cond_var);
ins_atomic_u32_eval_assign(&async_loop_again, 1);
@@ -356,7 +356,7 @@ ac_async_tick(void)
// rjf: compute val
B32 retry = 0;
AC_Artifact val = r->create(r->key, r->gen, r->last_requested_gen, &retry);
AC_Artifact val = r->create(r->key, r->cancel_signal, &retry);
// rjf: retry? -> resubmit request
if(retry && lane_idx() == 0)
@@ -458,7 +458,7 @@ ac_async_tick(void)
// rjf: compute val
B32 retry = 0;
AC_Artifact val = r->create(r->key, r->gen, r->last_requested_gen, &retry);
AC_Artifact val = r->create(r->key, r->cancel_signal, &retry);
// rjf: retry? -> resubmit request
if(retry)
+8 -2
View File
@@ -16,7 +16,7 @@ struct AC_Artifact
////////////////////////////////
//~ rjf: Artifact Computation Function Types
typedef AC_Artifact AC_CreateFunctionType(String8 key, U64 gen, U64 *requested_gen, B32 *retry_out);
typedef AC_Artifact AC_CreateFunctionType(String8 key, B32 *cancel_signal, B32 *retry_out);
typedef void AC_DestroyFunctionType(AC_Artifact artifact);
typedef U32 AC_Flags;
@@ -37,6 +37,7 @@ struct AC_ArtifactParams
U64 gen;
U64 evict_threshold_us;
B32 *stale_out;
B32 *cancel_signal;
AC_Flags flags;
};
@@ -48,7 +49,7 @@ struct AC_Request
{
String8 key;
U64 gen;
U64 *last_requested_gen;
B32 *cancel_signal;
AC_CreateFunctionType *create;
};
@@ -138,6 +139,11 @@ global AC_Shared *ac_shared = 0;
internal void ac_init(void);
////////////////////////////////
//~ rjf: Helpers
internal B32 ac_cancelled(void);
////////////////////////////////
//~ rjf: Cache Lookups