Guest User

Untitled

a guest
Sep 30th, 2022
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.76 KB | None | 0 0
  1. // Ryan way:
  2. ThreadLocalStorage Arena* scratchPool[MAX_SCRATCH_COUNT];
  3.  
  4. ArenaTemp GetScratch(Arena **conflicts, U64 conflict_count)
  5. {
  6.     Arena* freeArena = 0;
  7.     // Loop through the scratch pool and find an arena that doesn't conflict with the conflicts array
  8.     return ArenaTempBegin(freeArena);
  9. }
  10. #define ReleaseScratch(t) ArenaTempEnd(t)
  11.  
  12. // My way:
  13. ThreadLocalStorage Arena* scratchPool[MAX_SCRATCH_COUNT];
  14. ThreadLocalStorage int currentFreeScratch; // Introducing a new thread-local integer
  15.  
  16. ArenaTemp GetScratch(void)
  17. {
  18.     Arena* freeArena = 0
  19.     if (currentFreeScratch < MAX_SCRATCH_COUNT)
  20.         freeArena = scratchPool[currentFreeScratch++];
  21.     return ArenaTempBegin(freeArena);
  22. }
  23. #define ReleaseScratch(t) do { ArenaTempEnd(t); currentFreeScratch--; } while (0)
Advertisement
Add Comment
Please, Sign In to add comment