CreateThread创建线程传递结构体参数

#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

struct ThreadParameter{
    char user[20];
    char name[20];
};

DWORD WINAPI ThreadFunction (LPVOID pParam) {
    ThreadParameter *tp = (ThreadParameter *)pParam; //强制转换参数
    char user[20];
    char pass[20];
    strcpy(user,tp->user);
    strcpy(pass,tp->name);
    printf("User = %s pass = %s \r\n",user,pass);
    return 0;
}

int main(int argc,char* argv[])
{
    ThreadParameter tp;
    if (argc < 3)
    {
        printf("Unkow options error.\r\n");
        return -1;
    }
    memset(tp.name,0,20);
    memset(tp.user,0,20);
    strcpy(tp.user,argv[1]);
    strcpy(tp.name,argv[2]);
    HANDLE threadhandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunction,&tp,0,NULL);
    if (threadhandle == INVALID_HANDLE_VALUE)
    {
        printf("Create thread error.\r\n");
        return -1;
    }
    WaitForSingleObject(threadhandle,INFINITE); //等待线程退出
    CloseHandle(threadhandle); //关闭句柄
    return 0;
}
时间: 2024-12-16 17:49:30

CreateThread创建线程传递结构体参数的相关文章

在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!(更好的管理异常)

在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程! 如果直接使用Win32的API函数CreateThread()创建多个线程,也是可以创建的.但是,你应该明白,在每个线程中动态分配和销毁内存块,是需要同步保护的.Delphi语言中有一个在使用多线程环境下至关重要的全局变量IsMultiThread,系统在进行内存分配的时候,根据IsMultiThread变量值判断当前是否使用在多线程环境下,如果该变量为True,哪么,系统在分配和销毁内存的

x264中重要结构体参数解释,参数设置,函数说明 &lt;转&gt;

x264中重要结构体参数解释http://www.usr.cc/thread-51995-1-3.htmlx264参数设置http://www.usr.cc/thread-51996-1-3.html x264中重要结构体参数解释typedef struct x264_param_t{/* CPU 标志位 */unsigned int cpu;int         i_threads;       /* 并行编码多帧 */int         b_deterministic; /*是否允许非

学习pthreads,给线程传递多个参数

上篇博文中,boss线程给其他线程传递的只有一个参数,那么假如是多个参数呢?怎么传递呢?或许你会有这样的疑问,带着这个疑问,我们进入本文的世界,这里传递多个参数,采用结构体,为什么呢?因为结构体里可以根据自己的需要定义多个成员变量,传递过程中,我们只需要将结构体传给线程就可以了.本文分为两部分,第一部分给出代码示例,第二部分给出运行结果. 一.代码示例 二.运行结果 学习pthreads,给线程传递多个参数

绝对好文C#调用C++DLL传递结构体数组的终极解决方案

C#调用C++DLL传递结构体数组的终极解决方案 时间 2013-09-17 18:40:56 CSDN博客相似文章 (0) 原文  http://blog.csdn.net/xxdddail/article/details/11781003 在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了.但是当传递的是结构体.结构体数组或者结构体指针的时候,就会发现C#上没有类型可以对应.这时怎么办,第一反应是C#也定义结构体,然后当

关于C/C++结构体参数类型定义冲突

1.对于纯C程序调用纯C编译的动态库: 可直接在纯C程序包含的头文件中修改结构体参数类型名称.编译器不会有任何警告或者错误,并且可正常调用. 2.对于C++程序调用C++编译的动态库: 必须C++程序和C++动态库都使用extern "C"包含,方可以任意修改结构体参数类型名称.编译器不会有任何警告或者错误,并且可正常调用. 总结:只有当使用C语言方式编译相互调用时,可以任意修改结构体参数类型名称.

C语言中结构体参数变量的传递

c语言  结构体  函数  参数  传递 一.前言 本文中的程序实现对员工信息结构体字段赋值并打印出来的功能.该结构体的定义如下: // 员工信息结构体 typedef struct {        INT8       szEmployeeName[100];     // 员工姓名        UINT16  iEmployeeAge;                    // 员工年龄        UINT32  iEmployeeNo;                      

结构体参数

结构体作为函数参数: #include<stdio.h> #include<stdlib.h> #include<string.h> struct student { char name[10]; int age; }; void print_student(struct student s) { printf("name = %s,age = %d\n",s.name,s.age); } void set_student(struct studen

python 传递结构体指针到 c++ dll

CMakeLists.txt # project(工程名) project(xxx) # add_library(链接库名称 SHARED 链接库代码) add_library(xxx SHARED xxx.cpp) xxx.cpp #include <iostream> using namespace std; // c++ 结构体定义 struct struck_ { // 股票名,字符串 char * stock_code_; // 开盘价 double stock_open_; };

go 函数传递结构体

我定义了一个结构体,想要在函数中改变结构体的值,记录一下,以防忘记 ep: type Matrix struct{ rowlen int columnlen int list []int } 这是一个矩阵的结构体 函数传参格式 func main(){ var first Matrix func_name_you(&first) } func func_name_you(first *Matrix){ -- } 记得调用函数处要&+变量名 函数参数声明处要*+变量类型 原文地址:https