3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 11:55:51 +00:00

add initialization

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-06-11 19:28:08 -07:00
parent 583098b8b0
commit 71c38a08e5
13 changed files with 92 additions and 43 deletions

View file

@ -17,13 +17,13 @@ Notes:
--*/
#include "util/prime_generator.h"
#include "util/mutex.h"
#define PRIME_LIST_MAX_SIZE 1<<20
prime_generator::prime_generator() {
m_primes.push_back(2);
m_primes.push_back(3);
m_mux = alloc(mutex);
process_next_k_numbers(128);
}
@ -82,6 +82,7 @@ void prime_generator::process_next_k_numbers(uint64_t k) {
void prime_generator::finalize() {
m_primes.finalize();
dealloc(m_mux);
}
uint64_t prime_generator::operator()(unsigned idx) {
@ -110,8 +111,6 @@ prime_iterator::prime_iterator(prime_generator * g):m_idx(0) {
}
}
static mutex g_prime_iterator;
uint64_t prime_iterator::next() {
unsigned idx = m_idx;
m_idx++;
@ -120,7 +119,7 @@ uint64_t prime_iterator::next() {
}
else {
uint64_t r;
lock_guard lock(g_prime_iterator);
lock_guard lock(*m_generator->m_mux);
{
r = (*m_generator)(idx);
}