[PATCH] D142318: [Support] Add ThreadPoolAllocator class.
    Alexey Lapshin via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Jan 23 15:15:02 PST 2023
    
    
  
avl added a comment.
In D142318#4074207 <https://reviews.llvm.org/D142318#4074207>, @steven_wu wrote:
> I agree that this probably doesn't work for CAS since the use of CAS is not bounded to any context like a ThreadPoolExecutor, for example, it is currently a legal use case to have multiple thread pool to insert into CAS at the same time. It is not feasible to put such a restriction on CAS since CAS should be safe to read/write concurrently from different process.
>
> For this PoolAllocator, it might be a good idea to require it to be initialized with an instance of `ThreadPoolExecutor` and maybe add a method for Thread to get the context of its Executor so you can double check the allocator is used in the correct Exectuor when assertion is on.
I see, My first intention was to implement some similar solution.  But it requires an additional refactoring(f.e. ThreadPoolExecutor is not currently visible). This patch is simple working implementation allowing to check the idea.
I was thinking about something like that:
  class ThreadPoolAllocator {
    void *Allocate(size_t size, size_t alignment);
  };
  
  class ThreadPool {
    std::unique_ptr<ThreadPoolAllocator> getAllocator ();
  };
  
  class ThreadPoolExecutor {
    std::unique_ptr<ThreadPoolAllocator> getAllocator ();
  };
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142318/new/
https://reviews.llvm.org/D142318
    
    
More information about the llvm-commits
mailing list