kadircet added inline comments.

================
Comment at: clang-tools-extra/clangd/TUScheduler.cpp:277
       build(std::move(*CurrentReq));
+      bool IsEmpty = false;
+      {
----------------
sammccall wrote:
> kadircet wrote:
> > sammccall wrote:
> > > Seems clearer to do this immediately before blocking?
> > > 
> > > at the top:
> > > 
> > > ```
> > > if (!NextReq) {
> > >   Lock.unlock();
> > >   StatusManager.setPreambleAction(Idle);
> > >   Lock.lock();
> > >   ReqCV.wait(NextReq || Done);
> > > }
> > > if (Done)
> > >   break;
> > > ```
> > i agree, but I wanted to keep the current semantics. we only start emitting 
> > tustatuses after thread starts executing the first request.
> > 
> > happy to change *both* preamblethread and astworker to emit before blocking 
> > though. wdyt?
> I think the difference is moot - we never create either the AST or preamble 
> worker until there's something to do.
> 
> The code around scheduling/sleeping in the AST worker thread is way more 
> complicated, and I'm not confident moving the status broadcast to the top of 
> the loop would be clearer there.
> 
> Up to you: if you think both are clearer, move both. If you think the 
> preamble is clearer at the top and AST worker at the bottom, then you can 
> choose between consistency and clarity :-)
as discussed offline, this might make tests flaky due to a possible race 
between this thread and the thread issuing the write. so leaving it as it is.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76304/new/

https://reviews.llvm.org/D76304



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to