-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compiling "threaded-ssl.c" with PThreads4W #13532
Comments
I think that proposal introduces a hideous piece of code I rather not have in an example we provide showing off libcurl with. |
Seems harsh. POSIX allows pthread_t to be opaque so the way we cast it to long for thread id will not always work, like for PThreads4W as we can see here. How about a comment that explains this situation: diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c
index f58e447..4feea80 100644
--- a/docs/examples/threaded-ssl.c
+++ b/docs/examples/threaded-ssl.c
@@ -65,6 +65,8 @@ static unsigned long thread_id(void)
{
unsigned long ret;
+ /* How to obtain the thread ID will vary depending on the pthreads library
+ you are using. This example assumes pthread_self returns the ID. */
ret = (unsigned long)pthread_self();
return ret;
} |
A comment wont fix the compile error. |
Yeah but it is an example, it's not meant to address all cases. It is not correct to cast pthread_self() to unsigned long. It is not correct to cast pthread_self().p to unsigned long either. |
- Add a comment explaining that pthread_self(), which returns pthread_t, is not necessarily an integer thread ID. pthread_t type varies depending on the pthread library. For some pthread libraries, such as PThreads4W, it is a struct and not actual thread ID. Rather than update the example to handle every pthread implementation of thread ID we now explain that it varies depending on the library. Bug: curl#13532 Reported-by: Gisle Vanem Closes #xxxx
- Add a comment explaining that pthread_self(), which returns pthread_t, is not necessarily an integer thread ID. pthread_t type varies depending on the pthread library. For some pthread libraries, such as PThreads4W, it is a struct and not integer thread ID. Rather than update the example to handle every pthread implementation of thread ID we now explain that it varies depending on the library. Bug: curl#13532 Reported-by: Gisle Vanem Closes #xxxx
I did this
Compiling
docs/examples/threaded-ssl.c
using POSIX threads for Windows orPThreads4W, gives me this compile error (from clang-cl):
This is caused by
pthread_t
which is a structure on Pthreads4W.But with this patch, it compiles:
And the program works.
I expected the following
A successful compile.
curl/libcurl version
operating system
Win-10.
The text was updated successfully, but these errors were encountered: