mirror of
https://github.com/curl/curl.git
synced 2025-01-30 14:22:33 +08:00
eefcc1bda4
curldown is this new file format for libcurl man pages. It is markdown inspired with differences: - Each file has a set of leading headers with meta-data - Supports a small subset of markdown - Uses .md file extensions for editors/IDE/GitHub to treat them nicely - Generates man pages very similar to the previous ones - Generates man pages that still convert nicely to HTML on the website - Detects and highlights mentions of curl symbols automatically (when their man page section is specified) tools: - cd2nroff: converts from curldown to nroff man page - nroff2cd: convert an (old) nroff man page to curldown - cdall: convert many nroff pages to curldown versions - cd2cd: verifies and updates a curldown to latest curldown This setup generates .3 versions of all the curldown versions at build time. CI: Since the documentation is now technically markdown in the eyes of many things, the CI runs many more tests and checks on this documentation, including proselint, link checkers and tests that make sure we capitalize the first letter after a period... Closes #12730
1.8 KiB
1.8 KiB
c | SPDX-License-Identifier | Title | Section | Source | See-also | ||
---|---|---|---|---|---|---|---|
Copyright (C) Daniel Stenberg, <daniel.se>, et al. | curl | curl_multi_wakeup | 3 | libcurl |
|
NAME
curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
SYNOPSIS
#include <curl/curl.h>
CURLMcode curl_multi_wakeup(CURLM *multi_handle);
DESCRIPTION
This function can be called from any thread and it wakes up a sleeping curl_multi_poll(3) call that is currently (or is about to be) waiting for activity or a timeout.
If the function is called when there is no curl_multi_poll(3) call, it causes the next call to return immediately.
Calling this function only guarantees to wake up the current (or the next if there is no current) curl_multi_poll(3) call, which means it is possible that multiple calls to this function wake up the same waiting operation.
This function has no effect on curl_multi_wait(3) calls.
EXAMPLE
extern int time_to_die(void);
extern int set_something_to_signal_thread_1_to_exit(void);
extern int decide_to_stop_thread1();
int main(void)
{
CURL *easy;
CURLM *multi;
int still_running;
/* add the individual easy handle */
curl_multi_add_handle(multi, easy);
/* this is thread 1 */
do {
CURLMcode mc;
int numfds;
mc = curl_multi_perform(multi, &still_running);
if(mc == CURLM_OK) {
/* wait for activity, timeout or wakeup */
mc = curl_multi_poll(multi, NULL, 0, 10000, &numfds);
}
if(time_to_die())
return 1;
} while(still_running);
curl_multi_remove_handle(multi, easy);
/* this is thread 2 */
if(decide_to_stop_thread1()) {
set_something_to_signal_thread_1_to_exit();
curl_multi_wakeup(multi);
}
}
AVAILABILITY
Added in 7.68.0
RETURN VALUE
CURLMcode type, general libcurl multi interface error code.