_beginthead() を使用してスレッドを開始しています。文字列と 2 つの int の 3 つのパラメーターをスレッドに渡す必要があります。これが私が持っているものであり、これは決してプログラム全体ではなく、問題とは関係のないものをいくつか取り出しました(私の実際のプログラムでは main は実際にはメインではなく、それは単なる通常の機能です):
typedef struct ST
{
char *ip;
int port;
int dur;
}thestruct;
void main(char **arg_p, int arg_count)
{
char *ip;
int port, duration;
ip = (char *)malloc(sizeof(char));
ip = arg_p[0];
port = atoi(arg_p[1]);
duration = atoi(arg_p[2]);
thestruct *st;
st = (thestruct *)malloc(sizeof(thestruct));
st->dur = duration;
st->ip = (char *)malloc(sizeof(char));
st->ip = ip;
printf("ip: %s\n", st->ip);
st->port = port;
_beginthread((void(*)(void*))connect, 0, (void*)st);
}
void connect(thestruct *s)
{
Sleep(100);
char *ip = static_cast<char*>(s->ip);
int port = s->port;
int dur = s->dur;
printf("ip: %s\nport: %i\ndur: %i", ip, port, dur);
_endthread();
}
文字列 ip がスレッドに正しく渡されていないことを除いて、すべてがうまく機能しています。最初の printf 呼び出しで ip が完全に出力され、スレッド内で "ip: " が出力され、その後は空白になります。次に、新しい行に移動し、ポートと期間を完全に出力します。
ほとんどの人は1つの文字列などを渡すだけでよいため、私はこの問題のトピックをしばらく調査していましたが、役に立ちませんでした。したがって、グーグルで見つけられるのは、単一の文字列を渡す人だけであり、もちろんそれは機能します。
たとえば、「127.0.0.1 1234 25」を渡します。また、私が言ったように、2 つの整数が完全に機能し、文字列にエラーが発生していないため、構造体に問題はないようです。渡されていないだけです。
とにかく、誰かがこのトピックに光を当てることができれば、それは素晴らしいことです.