Re: [問題] pthread及參數為指標的問題
#include <stdio.h>
int ret;
void *(myf) (void *arg)
{
int *my_arg_L = (int *)arg;
printf("myf arg: %p\n", arg);
printf("my_arg_L: %d, %d\n", my_arg_L[0], my_arg_L[1]);
ret = 99;
return &ret;
}
int create(void *(*start_routine) (void *), void *arg)
{
printf("arg: %p\n", arg);
start_routine(arg);
return 0;
}
int main(int argc, char *argv[])
{
int p=2, q=100;
int arg_L[2] = { p, q-1 };
printf("arg_L: %p\n", arg_L);
int r = create(myf, (void *)arg_L);
printf("r: %d\n", r);
return 0;
}
模擬的程式行為, 讓你參考看看。
※ 引述《skyHuan (Huan)》之銘言:
: 開發平台(Platform): (Ex: Win10, Linux, ...)
: Linux
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: pthread
: 問題(Question):
: 最近在做多執行緒的實作遇到兩個問題
: 1.
: 因為pthread_create要呼叫的函式需要的參數是用指標宣告
: 所以函式的參數宣告成(void *)
: 我用一個args array傳入參數
: 那這個參數在函式中該怎麼取用呢
: 我寫的直接用arg[0], arg[1]應該是錯的
: compiler會有dereferencing "void *" pointer的warning
--
紙上得來終覺淺,絕知此事要躬行。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.196.174.254
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1539253589.A.03F.html
推
10/11 22:45,
5年前
, 1F
10/11 22:45, 1F
→
10/11 22:45,
5年前
, 2F
10/11 22:45, 2F
推
10/11 22:49,
5年前
, 3F
10/11 22:49, 3F
→
10/11 22:50,
5年前
, 4F
10/11 22:50, 4F
→
10/11 22:50,
5年前
, 5F
10/11 22:50, 5F
→
10/11 22:50,
5年前
, 6F
10/11 22:50, 6F
→
10/11 22:50,
5年前
, 7F
10/11 22:50, 7F
→
10/11 23:57,
5年前
, 8F
10/11 23:57, 8F
→
10/11 23:57,
5年前
, 9F
10/11 23:57, 9F
→
10/12 00:06,
5年前
, 10F
10/12 00:06, 10F
推
10/12 00:12,
5年前
, 11F
10/12 00:12, 11F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):