> Thanks... I'm so sorry but my bad English don't allow me understand this.
> Is there other word's? I don't feel how to speed up my application by
> using another thread.

You probably have a list of patterns (array, linked list, etc.). Each item 
should have a pcre and a study. When your application is initialized, set all 
study to NULL, and start your application. After all patterns are loaded, start 
a thread, which process the items of the list one-by-one, and perform a 
pcre_study. Copy the returned value to the study member.

This is thread safe, since the main thread only reads the study member when you 
call pcre_exec, and only the thread modify it. Your application starts with 
normal speed, which gradually improves as more patterns are compiled by the 
worker thread. If you have a pattern priority order, you can compile the more 
important ones first.

If you already have a study member, you need to be a bit more careful when you 
replace it, because you cannot free it if the main thread is currently using 
the study. However, it is not difficult to avoid such situations.

> > Are there this memory reads/writes more costly then JIT-recompiling?
>
> Zoltan, can you answer for this question please?

I have never tried it, so I don't know the exact performance overhead. You can 
give it a try to implement it, and if it works, I am willing to review your 
patches.

Regards,
Zoltan


-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to