Reconciliation#
After gathering all attribute lists, the signaler application must reconcile them. Successful reconciliation results in a new, reconciled attribute list that satisfies all applications’ requirements. If NvSciSync cannot create such a list because attributes contradict, it reports an error. In the example below, assume that waiterAttrList1 and waiterAttrList2 were created in the same process, so the variables are visible.
NvSciSyncAttrList unreconciledList[3] = {NULL};
NvSciSyncAttrList reconciledList = NULL;
NvSciSyncAttrList newConflictList = NULL;
NvSciError err;
unreconciledList[0] = signalerAttrList;
unreconciledList[1] = waiterAttrList1;
unreconciledList[2] = waiterAttrList2;
err = NvSciSyncAttrListReconcile(
unreconciledList, /* array of unreconciled lists */
3, /* size of this array */
&reconciledList, /* output reconciled list */
&newConflictList); /* unused but the user must provided a non-NULL */
if (err != NvSciError_Success) {
goto fail;
}
/* ... */
NvSciSyncAttrListFree(reconciledList);
NvSciSyncAttrListFree(newConflictList);
NvSciSync recognizes which attribute lists are reconciled and which are not. Some NvSciSync APIs that take NvSciSyncAttrList expect the list to be reconciled.