Sha256: 1cf0c612e82f0759d586d576e60d191de8b5e5b5b10cb7fae5fd31223780cdf1
Contents?: true
Size: 1.31 KB
Versions: 14
Compression:
Stored size: 1.31 KB
Contents
#include <ruby.h> #include <rubysig.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/time.h> #include <netinet/in.h> #include <arpa/inet.h> static VALUE ConcurrentThread; static VALUE ConcurrentThreadPool; static void count_to_10000(void* data){ int i = 0; for( i = 0; i < 10000; i++ ) { if ((*(VALUE *)data) == Qtrue) break; printf("Currently Counting from thr 1: %d\n",i); } } static void count_to_20000(void* data){ int i = 0; for( i = 0; i < 10000; i++ ) { if ((*(VALUE *)data) == Qtrue) break; printf("Currently Counting from thr 2: %d\n",i); } } static void stop_thr1(void* data) { printf("Calling thread1 break method\n"); *((VALUE *)data) = Qtrue; } static void stop_thr2(void* data) { printf("Calling thread2 break method\n"); *((VALUE *)data) = Qtrue; } static VALUE rb_concurrent_thread_method(VALUE self) { VALUE interrupt_flag; VALUE interrupt_flag2; rb_thread_blocking_region(count_to_10000,&interrupt_flag,stop_thr1,&interrupt_flag); rb_thread_blocking_region(count_to_20000,&interrupt_flag2,stop_thr2,&interrupt_flag2); } void Init_concurrent_thread(){ ConcurrentThread = rb_define_class("ConcurrentThread",rb_cObject); rb_define_method(ConcurrentThread,"defer",rb_concurrent_thread_method,0); }
Version data entries
14 entries across 14 versions & 1 rubygems