This function is meant to enable the parallel writing (with multiple threads) of several type 3 segments (Chebyshev polynomials of the position and velocity) in the time scale TDB to the SPK file associated to the ephemeris descriptor *eph*.

It reserves space in the file for *target_count* segments, each segment associated to a target in the *targets* array.
Each target has its own interpolation interval length specified in the *intlens_jd_tdb* array, its own number of records specified in the *record_counts* array, and its own segment identifier specified in the *segids* array.
All the targets share the same *center*, *frame*, *start_..._tdb*, *end_..._tdb* and *deg* parameters.

The array *targets*, *intlens_jd_tdb*, *record_counts* and *segids* must be of size *target_count*.

The reservation *id* returned by this function must be used in the function |writeph_spk3_par_write| to write in the corresponding reserved space.
In addition, the function |writeph_spk3_par_write| will require a *target_index*, which is the index of the target in the *targets* array used in this function.

A call to *writeph_spk3_par_reserve* is always performed by a single thread and is followed by several calls to |writeph_spk3_par_write| by one or several threads.



.. warning::

    The data covers the same timespan from the date *start_jd_tdb+start_frac_tdb* to *end_jd_tdb+end_frac_tdb* for all targets, but each target may have a different number of polynomials.
    The time span *record_counts\*intlens_jd_tdb* must be equal to the timespan defined from the date *start_jd_tdb+start_frac_tdb* to *end_jd_tdb+end_frac_tdb*.
    If the targets doesnot have the timespan, multiple reservations must be performed before the call to writing |writeph_spk3_par_write|. 

.. include:: examples/writeph_spk3_par_reserve.rst