libuv/docs/code/queue-cancel/main.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 
5 #include <uv.h>
6 
7 #define FIB_UNTIL 25
10 
11 long fib_(long t) {
12  if (t == 0 || t == 1)
13  return 1;
14  else
15  return fib_(t-1) + fib_(t-2);
16 }
17 
18 void fib(uv_work_t *req) {
19  int n = *(int *) req->data;
20  if (random() % 2)
21  sleep(1);
22  else
23  sleep(3);
24  long fib = fib_(n);
25  fprintf(stderr, "%dth fibonacci is %lu\n", n, fib);
26 }
27 
29  if (status == UV_ECANCELED)
30  fprintf(stderr, "Calculation of %d cancelled.\n", *(int *) req->data);
31 }
32 
33 void signal_handler(uv_signal_t *req, int signum)
34 {
35  printf("Signal received!\n");
36  int i;
37  for (i = 0; i < FIB_UNTIL; i++) {
39  }
41 }
42 
43 int main() {
45 
46  int data[FIB_UNTIL];
47  int i;
48  for (i = 0; i < FIB_UNTIL; i++) {
49  data[i] = i;
50  fib_reqs[i].data = (void *) &data[i];
52  }
53 
54  uv_signal_t sig;
55  uv_signal_init(loop, &sig);
56  uv_signal_start(&sig, signal_handler, SIGINT);
57 
58  return uv_run(loop, UV_RUN_DEFAULT);
59 }
fib
void fib(uv_work_t *req)
Definition: libuv/docs/code/queue-cancel/main.c:18
main
int main()
Definition: libuv/docs/code/queue-cancel/main.c:43
uv_signal_init
UV_EXTERN int uv_signal_init(uv_loop_t *loop, uv_signal_t *handle)
Definition: unix/signal.c:317
printf
_Use_decl_annotations_ int __cdecl printf(const char *_Format,...)
Definition: cs_driver.c:91
signal_handler
void signal_handler(uv_signal_t *req, int signum)
Definition: libuv/docs/code/queue-cancel/main.c:33
status
absl::Status status
Definition: rls.cc:251
uv_run
UV_EXTERN int uv_run(uv_loop_t *, uv_run_mode mode)
Definition: unix/core.c:361
uv_queue_work
UV_EXTERN int uv_queue_work(uv_loop_t *loop, uv_work_t *req, uv_work_cb work_cb, uv_after_work_cb after_work_cb)
Definition: threadpool.c:338
python_utils.port_server.stderr
stderr
Definition: port_server.py:51
fib_reqs
uv_work_t fib_reqs[FIB_UNTIL]
Definition: libuv/docs/code/queue-cancel/main.c:9
uv_default_loop
UV_EXTERN uv_loop_t * uv_default_loop(void)
Definition: uv-common.c:733
req
static uv_connect_t req
Definition: test-connection-fail.c:30
UV_RUN_DEFAULT
@ UV_RUN_DEFAULT
Definition: uv.h:254
fib_
long fib_(long t)
Definition: libuv/docs/code/queue-cancel/main.c:11
data
char data[kBufferLength]
Definition: abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1006
FIB_UNTIL
#define FIB_UNTIL
Definition: libuv/docs/code/queue-cancel/main.c:7
after_fib
void after_fib(uv_work_t *req, int status)
Definition: libuv/docs/code/queue-cancel/main.c:28
uv_signal_stop
UV_EXTERN int uv_signal_stop(uv_signal_t *handle)
Definition: unix/signal.c:511
n
int n
Definition: abseil-cpp/absl/container/btree_test.cc:1080
uv.h
uv_signal_s
Definition: uv.h:1561
loop
uv_loop_t * loop
Definition: libuv/docs/code/queue-cancel/main.c:8
uv_loop_s
Definition: uv.h:1767
uv_cancel
UV_EXTERN int uv_cancel(uv_req_t *req)
Definition: threadpool.c:358
uv_work_s
Definition: uv.h:1055
uv_req_s
Definition: uv.h:404
if
if(p->owned &&p->wrapped !=NULL)
Definition: call.c:42
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
uv_signal_start
UV_EXTERN int uv_signal_start(uv_signal_t *handle, uv_signal_cb signal_cb, int signum)
Definition: unix/signal.c:338


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:17