Does ets:select/2 block the VM?
    Shawn Pearce 
    spearce@REDACTED
       
    Mon Mar  3 04:27:28 CET 2003
    
    
  
I'm wondering about the implementation of ets:select/2.
If I match against a table with 200k records it takes nearly 1 second to
complete on my system.  I think I'm ok with this performance wise, but
I can't have the ets:select/2 call block the entire emulator, other traffic
still needs to be executed and processed in other processes.
An informal test where I spawn up a background process and have it
use io:format/2 every 10 milliseconds to print a message seems to run
perfectly fine while a 1 second ets:select/2 runs in another process.
I'm assuming thus that the Erlang system authors have thought about this
and have ensured that it doesn't become a problem.  :-)
Also, the documentation is vague as to what happens if the table owner
modifies a protected ets table using insert or delete while other
processes are using ets:select/2 or ets:select/3 (select with
a limit and continuation).  Is it safe to perform this, or does
the reader process have to use ets:safe_fixtable/2 ?
-- 
Shawn.
  A tall, dark stranger will have more fun than you.
    
    
More information about the erlang-questions
mailing list