草庐IT

createthread

全部标签

c - 如何在 C 中的 DLL 中执行线程

我创建了一个运行3个工作线程的DLL,主线程处于循环中等待线程完成。线程已创建,但未执行线程。我尝试在使用CreateThread()创建的函数中设置MessageBox函数,但该框没有出现。我也尝试过调试,CreateThread()的返回值有效,因此线程被创建。BOOLWINAPIDllMain(){main();return1;}intmain(){HANDLEh1,h2,h3;h1=CreateThread(first)...h2=CreateThread(second)...h3=CreateThread(third)...WaitForSingleObject(h3,INF

windows - CreateRemoteThread 如何在幕后工作?

CreateRemoteThread做了什么来实际创建远程线程? 最佳答案 在内核中,最底层的线程创建函数实际上只是创建一个线程对象,将它连接到一个进程并使其可运行。CreateThread和CreateRemoteThread实际上是相同的API并且工作方式相同,唯一的区别是CreateThread只允许您在当前进程中创建线程,而CreateRemoteThread允许您指定一个进程来创建线程。这意味着CreateThread与CreateRemoteThread(GetCurrentProcess(),....)几乎相同

windows - shell32.dll : access violation during GetOpenFileName new thread

GetOpenFileName因访问冲突而失败。文件必须在桌面上并且名称很长。只有在第一次成功打开文件后才会出现问题。当鼠标光标悬停在文件上时出现问题,因为工具提示即将显示。请参阅下面的答案。我将在下面留下原始问题描述。迈克·D。=======================我正在使用GetOpenFileName。我有时会在shell32的深处遇到访问冲突。第一次使用此代码时不会发生违规,通常需要五六次尝试。此外,如果在弹出打开的文件窗口后一两秒内选择一个文件,则不会发生违规。另外,我调试时显示的调用堆栈不包含我的任何代码。就好像某个独立的线程正在醒来做某事。非常感谢任何关于我如何调

c - 使用 CreateThread() 在 C 中线程化

我是C的新手,我正在尝试编写一个程序来运行MIDI序列,基本上,我有两个函数,都运行不同的MIDI模式,我需要它们并行运行。由于函数的性质(一个运行序列,另一个播放随机音符),我几乎100%确定我不能在同一函数中运行。我一直在互联网上搜索有关如何使用pthread(这显然在Windows上不起作用?)和CreateThread()执行此操作的线索,但我似乎无法让它工作。我目前正在尝试使用CreateThread()并尝试引入随机midi序列所需的整数,但我收到有关“LPTHREAD_START_ROUTINE”的错误,内容为:“预期的‘LPTHREAD_START_ROUTINE’,但

c++ - 在创建线程时无法理解此错误

HANDLEhThread;DWORDdwThreadId;hThread=CreateThread(NULL,//defaultsecurityattributes0,//usedefaultstacksizeMyThreadFunction,//threadfunctionname0,//argumenttothreadfunction0,//usedefaultcreationflags&dwThreadId);//returnsthethreadidentifier错误指定了第三个参数,但是当我双击错误时它会将我带到最后一个参数?尝试运行msdnCreateThread示例ht

c++ - WINAPI CreateThread 并不总是运行线程

我正在尝试使用WindowsCreateThreadAPI创建和执行线程。我看到运行该程序会产生不确定的行为。我从程序的输出中看到,线程方法“my”有时会被执行,有时不会。这可能是什么原因?该程序非常简单,如下所示。还有应该用什么初始化dwThreadID。它应该是0还是任何整数值?PS:在VisualStudio中编译。#include"stdafx.h"#include#includeusingnamespacestd;//DWORDWINAPIDWORDWINAPImy(LPVOIDlpParam){for(inti=0;i 最佳答案

windows - 用户级线程内核级线程和纤程

我知道纤程在线程的上下文中运行。它们只是用户级别的。我知道线程可以是用户级或内核级。当您在用户级应用程序中创建线程时,它也是用户级的吗?您能否在您的用户应用程序中创建内核级线程?这些用户级线程也是内核调度的?当您在.NET中调用CreateThread时,内核如何发挥作用?CreateThread函数是否需要通过susbsystemdll到执行层,一直到内核才能创建用户级线程? 最佳答案 在Windows平台上,用户态进程(应用程序)中的线程是用户态线程,内核态进程中的线程是内核态线程。您不能在用户模式进程中创建内核模式线程。在Wi

c++ - 创建线程不接受成员函数

我正在尝试为网络编程创建一个类。这将创建一个带线程的通用套接字。但是当我尝试使用createthread()创建线程时。第三个参数是产生错误。从网上我了解到我不能使用成员函数作为createthread()的参数。有什么可以实现的吗? 最佳答案 处理这个问题的最简单方法是创建一个“stub”函数,它会回调到您的类中。UINTtidHANDLEhThread=CreateThread(NULL,0,myThreadStub,this,0,&tid);....unsignedlongWINAPImyThreadStub(void*ptr

c++ - 如何将对象传递给 CreateThread 函数?

我想将一个类的对象作为参数传递给CreateThread函数。在main中以这种方式创建对象:Connection*connection=newBluetooth();Brick*nxt=newBrick(connection);我传递给CreateThread的函数是:DWORDWINAPIrecieveFunct(Bricknxt)最后,在main中调用了CreateThread:IDRecieveThread=CreateThread(NULL,0,recieveFunct,*nxt,0,NULL);在main中,我创建了nxt对象。这个对象有我想从线程调用的读写函数。但是,我无

c++ - 如何向 SDL 线程发送附加参数?

是的,我知道如何创建SDL线程。intmyfunc(void*data){//mycode...}SDL_CreateThread*mythread=SDL_CreateThread(myfunc,NULL);但是如果我想做类似的事情怎么办:intmyfunc(void*data,intmyparameter1,charmyparameter2){//mycode...}SDL_CreateThread*mythread=SDL_CreateThread(myfunc,NULL,42,'c');即如何为具有多个参数的函数创建一个线程(参数不包括通常的'void*data')如果这不可能