progress_handler

 void sqlite_progress_handler(sqlite*, int, int(*)(void*), void*);

sqlite.h に解説されていますが,この関数を使って sqlite に progress_handler を指定すると,任意の時点でクエリーをキャンセルすることが可能となる.
GUI を持つアプリケーションなどで進捗状況を提示する際に利用したり,クエリーの中止などが実装できる.

これを使って PssEditor の QuickFinder に「新しい文字列が指定されたので現在実行中のクエリーは中止して新しい文字列でクエリーしてちょうだいな」処理を組み込みます.

 View - QuickFinder - SearchThread
   +-------->| request
             | create new thread
                           | querying...
   +-------->| new request
             +------------>| stop/new query msg
                           | in progress_handler, catch the msg, then stop current query and make new query.
                           | querying...
                           | have result.
             |<------------+ send back the result.

こんな感じで作りましょう.