CRU_FREE_NOW (3)
CRU MANUAL
CRU_FREE_NOW (3)

NAME

cru_free_now - blocking graph reclamation function

SYNOPSIS

#include <cru/cru.h>

void cru_free_now (
   cru_graph g ,
   unsigned lanes ,
   int *err )

DESCRIPTION

This function reclaims all memory allocated for storage of a graph concurrently and blocks the caller until finished. The parameter g refers to the graph to be reclaimed, and is expected to have been returned by some library function that returns a cru_graph.

The lanes parameter specifies the number of worker threads to be used for the operation. Higher numbers up to the number of CPU cores on the host are conducive to higher performance.

For purposes of memory management, the graph g is consumed by this function and must not be accessed afterwards.

RETURN VALUE

none

ERRORS

To avoid a memory leak, this function must be called for each graph before it goes out of scope. Memory leaks are an error but are not detected or reported.

Any attempted use of the graph g subsequent to passing it to this function is an error with unpredictable consequences.

The err parameter is used to report any events preventing successful completion of the requested operation to the caller. If *err is zero on entry and the operation does not succeed, then *err is assigned a non-zero number. Positive numbers are for POSIX or user-defined error codes, and negative numbers down to -CRU_MAX_ERR are specific to cru.

Values of *err listed below refer to errors that are detected and handled. Unlisted values in the range of -CRU_INT_ERR through -CRU_MAX_ERR likely indicate internal errors attributable to bugs in cru. Any other unlisted values may indicate memory corruption or invalid usage of the API.

ENOMEM

There is insufficient memory to start a thread, so the graph was freed sequentially in the foreground.

CRU_BADGPH

The parameter g refers to a corrupted or invalid cru_graph.

NOTES

This way of freeing a graph is appropriate if the application performs further operations after using the graph that are sufficiently memory intensive to risk causing a heap overflow unless the graph is freed in advance. The alternative of cru_free_later may be more appropriate otherwise.

FILES

/usr/local/include/cru/cru.h

/usr/local/include/cru/data_types.h

/usr/local/include/cru/error_codes.h

SEE ALSO

cru, cru_bop, cru_bpred, cru_builder, cru_built, cru_cbop, cru_classifier, cru_class_of, cru_class_size, cru_composed, cru_composer, cru_connect, cru_connector, cru_cqop, cru_crossed, cru_crosser, cru_ctop, cru_ctop_pair, cru_ctop_quad, cru_data_types, cru_deduplicated, cru_destructor, cru_destructor_pair, cru_edge_count, cru_fabricated, cru_fabricator, cru_filter, cru_filtered, cru_fold, cru_free_kill_switch, cru_free_later, cru_free_partition, cru_function_types, cru_get, cru_hash, cru_induced, cru_inducer, cru_kernel, cru_kill, cru_killed, cru_mapreduced, cru_mapreducer, cru_merged, cru_merger, cru_mutated, cru_mutator, cru_new_kill_switch, cru_nop, cru_order, cru_order_pair, cru_partition_of, cru_plan, cru_postponed, cru_postponer, cru_prop, cru_prop_pair, cru_pruner, cru_qop, cru_qpred, cru_set, cru_sig, cru_singleton, cru_split, cru_splitter, cru_spread, cru_strerror, cru_stretch, cru_stretched, cru_stretcher, cru_subconnector, cru_terminus_count, cru_top, cru_tpred, cru_united, cru_uop, cru_vertex_count, cru_zone

AUTHOR

Dennis Furey (milonga@delayinsensitive.com)

PROJECT PAGE

https://github.com/gueststar/cru

CRU VERSION 0.15.3
October 05, 2024
CRU_FREE_NOW (3)