[#ASYNC_start_job]
= ASYNC&lowbar;start&lowbar;job
:mrdocs:

Start or resume an asynchronous job&period;

== Synopsis

Declared in `&lt;openssl&sol;async&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
int
ASYNC&lowbar;start&lowbar;job(
    xref:ASYNC_JOB.adoc[ASYNC&lowbar;JOB]** job,
    xref:ASYNC_WAIT_CTX.adoc[ASYNC&lowbar;WAIT&lowbar;CTX]* ctx,
    int* ret,
    int(* func)(void*),
    void* args,
    size&lowbar;t size);
----

== Return Value

ASYNC&lowbar;ERR, ASYNC&lowbar;NO&lowbar;JOBS, ASYNC&lowbar;PAUSE, or ASYNC&lowbar;FINISH&period;

== Parameters

[cols="1,4"]
|===
| Name| Description
| *job*
| Location of the job pointer&semi; updated when the job pauses or finishes&period;
| *ctx*
| Wait context used while the job is running&period;
| *ret*
| Receives the job function&apos;s return value when the job finishes&period;
| *func*
| Function to run asynchronously&semi; receives `args&period;`
| *args*
| Argument passed to `func&period;`
| *size*
| Size in bytes of the memory copied into the job for `args&period;`
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
