File: callback_cancel.cpp

package info (click to toggle)
primesieve 5.7.2%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,064 kB
  • ctags: 1,079
  • sloc: cpp: 5,871; makefile: 232; ansic: 176; sh: 102
file content (29 lines) | stat: -rw-r--r-- 587 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/// @example cancel_callback.cpp
/// Cancel callback of primes by throwing a
/// primesieve::cancel_callback() exception. Note that multi-threaded
/// callback can currently not be cancelled this way.

#include <primesieve.hpp>
#include <stdint.h>
#include <iostream>

int i = 0;

void callback(uint64_t prime)
{
  if (++i == 1000000)
  {
    std::cout << "10^6th prime = " << prime << std::endl;
    throw primesieve::cancel_callback();
  }
}

int main()
{
  try
  {
    primesieve::callback_primes(0, 1000000000, callback);
  }
  catch (primesieve::cancel_callback&) { }
  return 0;
}