1 /** 2 * \file 3 * A mostly concurrent hashtable 4 * 5 * Author: 6 * Rodrigo Kumpera (kumpera@gmail.com) 7 * 8 * (C) 2014 Xamarin 9 */ 10 11 #ifndef __MONO_CONCURRENT_HASHTABLE_H__ 12 #define __MONO_CONCURRENT_HASHTABLE_H__ 13 14 #include <mono/utils/mono-publib.h> 15 #include <mono/utils/mono-compiler.h> 16 #include <mono/utils/mono-os-mutex.h> 17 #include <glib.h> 18 19 typedef struct _MonoConcurrentHashTable MonoConcurrentHashTable; 20 21 MONO_API MonoConcurrentHashTable* mono_conc_hashtable_new (GHashFunc hash_func, GEqualFunc key_equal_func); 22 MONO_API MonoConcurrentHashTable* mono_conc_hashtable_new_full (GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func); 23 MONO_API void mono_conc_hashtable_destroy (MonoConcurrentHashTable *hash_table); 24 MONO_API gpointer mono_conc_hashtable_lookup (MonoConcurrentHashTable *hash_table, gpointer key); 25 MONO_API gpointer mono_conc_hashtable_insert (MonoConcurrentHashTable *hash_table, gpointer key, gpointer value); 26 MONO_API gpointer mono_conc_hashtable_remove (MonoConcurrentHashTable *hash_table, gpointer key); 27 MONO_API void mono_conc_hashtable_foreach (MonoConcurrentHashTable *hashtable, GHFunc func, gpointer userdata); 28 MONO_API void mono_conc_hashtable_foreach_steal (MonoConcurrentHashTable *hashtable, GHRFunc func, gpointer userdata); 29 30 #endif 31