Blame view

3rdparty/curl/share/man/man3/curl_multi_wakeup.3 2.72 KB
a86c63ca   Hu Chunming   提交三方库文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  .\" **************************************************************************
  .\" *                                  _   _ ____  _
  .\" *  Project                     ___| | | |  _ \| |
  .\" *                             / __| | | | |_) | |
  .\" *                            | (__| |_| |  _ <| |___
  .\" *                             \___|\___/|_| \_\_____|
  .\" *
  .\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
  .\" *
  .\" * This software is licensed as described in the file COPYING, which
  .\" * you should have received as part of this distribution. The terms
  .\" * are also available at https://curl.se/docs/copyright.html.
  .\" *
  .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
  .\" * copies of the Software, and permit persons to whom the Software is
  .\" * furnished to do so, under the terms of the COPYING file.
  .\" *
  .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  .\" * KIND, either express or implied.
  .\" *
  .\" **************************************************************************
  .TH curl_multi_wakeup 3 "November 05, 2020" "libcurl 7.77.0" "libcurl Manual"
  
  .SH NAME
  curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
  .SH SYNOPSIS
  #include <curl/curl.h>
  
  CURLMcode curl_multi_wakeup(CURLM *multi_handle);
  .ad
  .SH DESCRIPTION
  This function can be called from any thread and it wakes up a
  sleeping \fIcurl_multi_poll(3)\fP call that is currently (or will be)
  waiting for activity or a timeout.
  
  If the function is called when there is no \fIcurl_multi_poll(3)\fP call,
  it will cause the next call to return immediately.
  
  Calling this function only guarantees to wake up the current (or the next
  if there is no current) \fIcurl_multi_poll(3)\fP call, which means it is
  possible that multiple calls to this function will wake up the same waiting
  operation.
  
  This function has no effect on \fIcurl_multi_wait(3)\fP calls.
  .SH RETURN VALUE
  CURLMcode type, general libcurl multi interface error code.
  .SH AVAILABILITY
  Added in 7.68.0
  .SH EXAMPLE
  .nf
  CURL *easy_handle;
  CURLM *multi_handle;
  
  /* add the individual easy handle */
  curl_multi_add_handle(multi_handle, easy_handle);
  
  /* this is thread 1 */
  do {
    CURLMcode mc;
    int numfds;
  
    mc = curl_multi_perform(multi_handle, &still_running);
  
    if(mc == CURLM_OK) {
      /* wait for activity, timeout or wakeup */
      mc = curl_multi_poll(multi_handle, NULL, 0, 10000, &numfds);
    }
  
    if(time_to_die())
      exit(1);
  
  } while(still_running);
  
  curl_multi_remove_handle(multi_handle, easy_handle);
  
  /* this is thread 2 */
  
  if(something makes us decide to stop thread 1) {
  
    set_something_to_signal_thread_1_to_exit();
  
    curl_multi_wakeup(multi_handle);
  }
  
  .fi
  .SH "SEE ALSO"
  .BR curl_multi_poll "(3), " curl_multi_wait "(3)"