]> Git Repo - VerusCoin.git/commit - src/init.cpp
Parallelize script verification
authorPieter Wuille <[email protected]>
Sat, 1 Dec 2012 22:04:14 +0000 (23:04 +0100)
committerPieter Wuille <[email protected]>
Tue, 8 Jan 2013 01:00:59 +0000 (02:00 +0100)
commitf9cae832e6f56c6abe89b3bf05d1f176c2a7c913
treedd6c7cbfdee74c58b23e538853d7439bfa1f41e6
parent1d70f4bde8f6adc4df65397f486186a694a74c60
Parallelize script verification

* During block verification (when parallelism is requested), script
  check actions are stored instead of being executed immediately.
* After every processed transactions, its signature actions are
  pushed to a CScriptCheckQueue, which maintains a queue and some
  synchronization mechanism.
* Two or more threads (if enabled) start processing elements from
  this queue,
* When the block connection code is finished processing transactions,
  it joins the worker pool until the queue is empty.

As cs_main is held the entire time, and all verification must be
finished before the block continues processing, this does not reach
the best possible performance. It is a less drastic change than
some more advanced mechanisms (like doing verification out-of-band
entirely, and rolling back blocks when a failure is detected).

The -par=N flag controls the number of threads (1-16). 0 means auto,
and is the default.
bitcoin-qt.pro
src/checkqueue.h [new file with mode: 0644]
src/init.cpp
src/main.cpp
src/main.h
src/net.h
src/test/test_bitcoin.cpp
This page took 0.022001 seconds and 4 git commands to generate.