## schroasync

schroasync

## Synopsis

                        SchroAsync;
                        SchroAsyncTask;
    void                (*SchroAsyncCompleteFunc)           (void *);
    int                 (*SchroAsyncScheduleFunc)           (void *,
                                                             SchroExecDomain exec_domain);
                        SchroThread;
    SchroAsync*         schro_async_new                     (int n_threads,
                                                             SchroAsyncScheduleFunc schedule,
                                                             SchroAsyncCompleteFunc complete,
                                                             void *closure);
    void                schro_async_free                    (SchroAsync *async);
    int                 schro_async_get_num_completed       (SchroAsync *async);
    void                schro_async_lock                    (SchroAsync *async);
    void                schro_async_unlock                  (SchroAsync *async);
    void*               schro_async_pull                    (SchroAsync *async);
    void*               schro_async_pull_locked             (SchroAsync *async);
    void                schro_async_run_locked              (SchroAsync *async,
                                                             void (funcvoid *) (),
                                                             void *ptr);
    void                schro_async_signal_scheduler        (SchroAsync *async);
    int                 schro_async_wait_locked             (SchroAsync *async);
    void                schro_async_wait_one                (SchroAsync *async);
    void                schro_async_add_cuda                (SchroAsync *async);
    SchroExecDomain     schro_async_get_exec_domain         (void);
    void                schro_async_wait                    (SchroAsync *async,
                                                             int min_waiting);

## Description

## Details

### SchroAsync

    typedef struct _SchroAsync SchroAsync;

### SchroAsyncTask

    typedef struct _SchroAsyncTask SchroAsyncTask;

### SchroAsyncCompleteFunc ()

    void                (*SchroAsyncCompleteFunc)           (void *);

`Param1` : |

### SchroAsyncScheduleFunc ()

    int                 (*SchroAsyncScheduleFunc)           (void *,
                                                             SchroExecDomain exec_domain);

`Param1` : |
`exec_domain` : |
Returns : |

### SchroThread

    typedef struct _SchroThread SchroThread;

### schro_async_new ()

    SchroAsync*         schro_async_new                     (int n_threads,
                                                             SchroAsyncScheduleFunc schedule,
                                                             SchroAsyncCompleteFunc complete,
                                                             void *closure);

`n_threads` : |
`schedule` : |
`complete` : |
`closure` : |
Returns : |

### schro_async_free ()

    void                schro_async_free                    (SchroAsync *async);

`async` : |

### schro_async_get_num_completed ()

    int                 schro_async_get_num_completed       (SchroAsync *async);

`async` : |
Returns : |

### schro_async_lock ()

    void                schro_async_lock                    (SchroAsync *async);

`async` : |

### schro_async_unlock ()

    void                schro_async_unlock                  (SchroAsync *async);

`async` : |

### schro_async_pull ()

    void*               schro_async_pull                    (SchroAsync *async);

`async` : |
Returns : |

### schro_async_pull_locked ()

    void*               schro_async_pull_locked             (SchroAsync *async);

`async` : |
Returns : |

### schro_async_run_locked ()

    void                schro_async_run_locked              (SchroAsync *async,
                                                             void (funcvoid *) (),
                                                             void *ptr);

`async` : |
`func` : |
`ptr` : |

### schro_async_signal_scheduler ()

    void                schro_async_signal_scheduler        (SchroAsync *async);

`async` : |

### schro_async_wait_locked ()

    int                 schro_async_wait_locked             (SchroAsync *async);

`async` : |
Returns : |

### schro_async_wait_one ()

    void                schro_async_wait_one                (SchroAsync *async);

`async` : |

### schro_async_add_cuda ()

    void                schro_async_add_cuda                (SchroAsync *async);

`async` : |

### schro_async_get_exec_domain ()

    SchroExecDomain     schro_async_get_exec_domain         (void);

Returns : |

### schro_async_wait ()

    void                schro_async_wait                    (SchroAsync *async,
                                                             int min_waiting);

`async` : |
`min_waiting` : |