A. 在VC++ 的 MFC中 函数经过多线程编程后不能运行
把这个全局函数的功能全写回到你的成员函数里让信,
然后你胡滑蚂调用线程时将当前的this指针传进去,
再在这个全局函数调用你的成员函数(通过传入的this指针调用裤埋,记得将参数强制转换回你原来的类型)
B. 多线程原理是什么
进程与线程是操作系统中的基本概念。进程代表应用程序的执行实例,拥有独立的虚拟地址空间,包括代码、数据和资源。进程终止时,其资源也会被销毁。线程是进程内部的执行单元,它以函数形式运行,例如main或WinMain函数。线程终止,进程也随之结束。每个进程至少有一个主执行线程,由系统自动创建。用户可创建其他线程,这些线程在同一个进程中并发执行。每个线程拥有独立的堆栈和CPU寄存器副本,但共享进程中的其他资源如文件、静态数据和堆内存。
线程间的通信简便,多线程技术广泛应用。但使用公共资源的线程需要同步。Win32提供了同步资源的方式,如信号、临界区、事件和互斥体。每个进程有独立的虚拟地址空间,所有线程共享同一地址空间。线程被分配时间片,由操作系统调度。通过时间片轮转,看起来多个线程同时运行。在多处理器系统上,多个线程可真正同时运行。
Windows平台下,Win32应用程序可在多个进程中运行,每个进程可由多个线程实现。当应用程序有多个任务同时运行时,创建多个线程是有用的。例如,打印时可创建一个负责打印的线程。这种机制使得打印和其他功能同时运行,充分利用CPU空闲时间,避免用户等待。这称为多任务,即在进行打印任务的同时可以执行其他任务。需要注意的是,大多数计算机单处理器,操作系统为每个线程分配时间片,产生线程同时运行的假象。活跃线程争夺控制权会消耗大量CPU资源,降低系统性能。
Win32 SDK提供多线程编程支持,包括同步、互斥和临界区等操作。Visual C++ 6.0中,MFC类库也支持多线程编程。线程分为工作者线程和用户界面线程。工作者线程常处理后台任务,不会耽搁用户使用应用程序。用户界面线程处理用户输入和事件,具有单独的消息队列和窗口界面。Windows95为抢先式多任务系统,即使一个线程因等待事件阻塞,其他线程仍可继续运行。