24 #ifndef REPLY_INCREMENT_COUNTER_HPP
25 #define REPLY_INCREMENT_COUNTER_HPP
27 #include <graphlab/parallel/atomic.hpp>
28 #include <graphlab/parallel/pthread_tools.hpp>
32 class distributed_control;
43 blob(
char* c,
size_t len):c(c),len(len) { };
44 blob():c(NULL), len(0){ };
51 void save(oarchive& oarc)
const {
53 if (len > 0) serialize(oarc, c, len);
57 void load(iarchive& iarc) {
62 c = (
char*) malloc(len);
63 deserialize(iarc, c, len);
86 struct reply_ret_type{
96 reply_ret_type(
bool usemutex,
size_t retcount = 1):flag(retcount),
100 ~reply_ret_type() { }
109 while(flag.value != 0) cond.wait(mut);
113 while(flag.value != 0) sched_yield();
126 struct stored_ret_type{
128 std::map<procid_t, blob> val;
135 stored_ret_type(
size_t retcount = 1):flag(retcount) {
138 ~stored_ret_type() { }
146 while(flag.value != 0) cond.wait(mut);
161 void reply_increment_counter(distributed_control &dc,
procid_t src,
162 size_t ptr, dc_impl::blob ret);
171 void stored_increment_counter(distributed_control &dc,
procid_t src,
172 size_t ptr, dc_impl::blob ret);