| 21 |   | To initialize a single-thread program, call | 
                      
                        | 22 |   | {{{ | 
                      
                        | 23 |   | #!c++ | 
                      
                        | 24 |   | int boinc_init(); | 
                      
                        | 25 |   | }}} | 
                      
                        | 26 |   |  | 
                      
                        | 27 |   | To initialize a multi-thread program, call | 
                      
                        | 28 |   | {{{ | 
                      
                        | 29 |   | #!c++ | 
                      
                        | 30 |   | int boinc_init_parallel(); | 
                      
                        | 31 |   | }}} | 
                      
                        | 32 |   |  | 
                      
                        | 33 |   | Note that `boinc_init_parallel` will `fork` on Unix systems, | 
                      
                        | 34 |   | so you must not create any thread or try to store the current PID | 
                      
                        | 35 |   | before calling this function. | 
                      
                        | 36 |   | If this function succeeds, | 
                      
                        | 37 |   | the parent (original) process will run an internal loop, | 
                      
                        | 38 |   | and will not return; | 
                      
                        | 39 |   | code following the `boinc_init_parallel` call will run in the child process. | 
                      
                      
                        |   | 17 | {{{ | 
                      
                        |   | 18 | BOINC_OPTIONS options; | 
                      
                        |   | 19 |  | 
                      
                        |   | 20 | boinc_options_defaults(options); | 
                      
                        |   | 21 | options.multi_thread = true;    // include this if your app's main process uses multiple threads | 
                      
                        |   | 22 | options.multi_process = true;   // include this if your app uses multiple processes | 
                      
                        |   | 23 |  | 
                      
                        |   | 24 | boinc_init_options(&options); | 
                      
                        |   | 25 | }}} | 
                      
                        |   | 26 |  | 
                      
                        |   | 27 | Do not create any threads or store the current PID | 
                      
                        |   | 28 | before calling '''boinc_init_options()'''. |