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

Version Path
packet-0.1.1 examples/concurrent_thread.c
packet-0.1.10 examples/concurrent_thread.c
packet-0.1.11 examples/concurrent_thread.c
packet-0.1.12 examples/concurrent_thread.c
packet-0.1.13 examples/concurrent_thread.c
packet-0.1.14 examples/concurrent_thread.c
packet-0.1.15 examples/concurrent_thread.c
packet-0.1.2 examples/concurrent_thread.c
packet-0.1.4 examples/concurrent_thread.c
packet-0.1.5 examples/concurrent_thread.c
packet-0.1.7 examples/concurrent_thread.c
packet-0.1.8 examples/concurrent_thread.c
packet-0.1.9 examples/concurrent_thread.c
packet-0.1.3 examples/concurrent_thread.c