vc同时执行两个代码的方法,这问题多线程能解决吗?
3个回答
展开全部
能,这时肯定的,只是多线程同时执行多个代码,他的原理其实本质上还是没有做到真正的同步,因为要执行的代码是分时段执行的,由于,时段特别短,所有感觉就是同步的一样。可以用CreateThread函数创建几个不同的线程,然后再不同的线程里添加你要执行的代码,就OK啦,但是要注意的一点是,如果线程共享资源的话,就有点麻烦,要创建互斥对象,或者创建代码区。推荐你去看孙鑫老师的视频教程。
追问
创建线程的表头是什么?
如何创建新线程?新线程是在main{}里面还是外面书写?
如何写触发线程的代码?(触发函数)
(简略回答一下就好了)
追答
#include "stdio.h"
#include "windows.h"
DWORD WINAPI Thread1(LPVOID lpParam);
DWORD WINAPI Thread2(LPVOID lpParam);
void main()
{
HANDLE hHandle=CreateThread(NULL,0,Thread1,NULL,0,NULL);
CloseHandle(hHandle);
hHandle=CreateThread(NULL,0,Thread2,NULL,0,NULL);
CloseHandle(hHandle);
while(1);
}
DWORD WINAPI Thread1(LPVOID lpParam)
{
while(1)
{
printf("Thread1\n");
Sleep(100);
}
return 0;
}
展开全部
不知道你是用C++还是啥?
如果是C++, 那么请更换VS2012,然后使用一下方法创建线程:
#include <thread>
// thread_fun 函数和 thread_fun2函数为线程要执行的代码 你的问题需要定义三个函数
void thread_fun() {
// ....
}
void thread_fun2() {
// ....
}
int main() {
std::thread t1(thread_fun), t2(thread_fun), t3(thread_fun2); /*将函数直接传递给thread对象,thread对象会自动建立内核级线程(和你用CreateThread创建的线程差不多,这里的好处是所有工作交给thread对象去做), 然后thread对象会让线程自动执行传递的函数的代码*/
t1.join();
t2.join();
t3.join();
system(“pause”);
return 0;
}
按照上面的步骤 , 你基本上能编写出简单的多线程程序!!!!
上面的大妈除了main函数中的thread对象外 ,其余的代码都和C写出来的差不多。。。。。
如果楼主不懂C++ 或者 不愿使用VS2012, 那么请楼主取用楼上的CreateThread方法。
如果是C++, 那么请更换VS2012,然后使用一下方法创建线程:
#include <thread>
// thread_fun 函数和 thread_fun2函数为线程要执行的代码 你的问题需要定义三个函数
void thread_fun() {
// ....
}
void thread_fun2() {
// ....
}
int main() {
std::thread t1(thread_fun), t2(thread_fun), t3(thread_fun2); /*将函数直接传递给thread对象,thread对象会自动建立内核级线程(和你用CreateThread创建的线程差不多,这里的好处是所有工作交给thread对象去做), 然后thread对象会让线程自动执行传递的函数的代码*/
t1.join();
t2.join();
t3.join();
system(“pause”);
return 0;
}
按照上面的步骤 , 你基本上能编写出简单的多线程程序!!!!
上面的大妈除了main函数中的thread对象外 ,其余的代码都和C写出来的差不多。。。。。
如果楼主不懂C++ 或者 不愿使用VS2012, 那么请楼主取用楼上的CreateThread方法。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以!!没有问题的!!即使有Sleep,也没有问题的,Sleep只会暂停自己线程的执行!!不影响其它线程的执行!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询