Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CK_EPOCH_RECYCLE(3)	 BSD Library Functions Manual	   CK_EPOCH_RECYCLE(3)

NAME
     ck_epoch_recycle -- return	an epoch record	that may be used by caller

LIBRARY
     Concurrency Kit (libck, -lck)

SYNOPSIS
     #include <ck_epoch.h>

     ck_epoch_record_t *
     ck_epoch_recycle(ck_epoch_t *epoch);

DESCRIPTION
     The ck_epoch_recycle(3) function attempts to return an unused epoch
     record object for use by the caller. These	epoch records were associated
     with previous calls to the	ck_epoch_unregister(3) function.

EXAMPLE
	   #include <ck_epoch.h>
	   #include <stdlib.h>

	   /*
	    * epoch was	previously initialized with ck_epoch_init.
	    */
	   ck_epoch_t *epoch;

	   void
	   function(void)
	   {
		   ck_epoch_record_t *record;

		   record = ck_epoch_recycle(&epoch);
		   if (record == NULL) {
			   record = malloc(sizeof *record);
			   if (record == NULL)
				   return;

			   ck_epoch_register(&epoch, record);
		   }

		   /*
		    * After we are done, we will unregister the	record so it
		    * can be used by other new participants in the epoch system
		    * provided by the object pointed to	by "epoch".
		    */
		   ck_epoch_unregister(&epoch, record);
		   return;
	   }

RETURN VALUES
     This function returns a pointer to	a ck_epoch_record_t object. If no un-
     used record was found to be associated with the object pointed to by
     epoch, then the function will return NULL.

ERRORS
     Behavior is undefined if the object pointed to by epoch is	not a valid
     epoch object.

SEE ALSO
     ck_epoch_init(3), ck_epoch_register(3), ck_epoch_unregister(3),
     ck_epoch_poll(3), ck_epoch_synchronize(3),	ck_epoch_reclaim(3),
     ck_epoch_barrier(3), ck_epoch_call(3), ck_epoch_begin(3), ck_epoch_end(3)

     Additional	information available at http://concurrencykit.org/

			       September 2, 2012

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | EXAMPLE | RETURN VALUES | ERRORS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=ck_epoch_recycle&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help