首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多线程?该如何处理

2012-02-11 
多线程????学操作系统时候,学了多线程,只知道个概念,一直不知道怎么在编程中实现,大侠们可否给个代码,引小

多线程????
学操作系统时候,学了多线程,只知道个概念,
一直不知道怎么在编程中实现,
大侠们可否给个代码,引小弟入门啊,
要C/C++的代码,
最近学winsock,如果联系上winsock就更好了。
谢谢!
等待中

[解决办法]
pthread
boost::mutlithread
openmp
建议google一下有初步了解
[解决办法]
我知道JAVA支持多线程编程
其他有些语言好象不支持多线程编程
建议GOOGLE一下学习
[解决办法]
#include <windows.h>
#include <strsafe.h>

#define MAX_THREADS 3
#define BUF_SIZE 255

typedef struct _MyData {
int val1;
int val2;
} MYDATA, *PMYDATA;

DWORD WINAPI ThreadProc( LPVOID lpParam ) 

HANDLE hStdout;
PMYDATA pData;

TCHAR msgBuf[BUF_SIZE];
size_t cchStringSize;
DWORD dwChars;

hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
if( hStdout == INVALID_HANDLE_VALUE )
return 1;

// Cast the parameter to the correct data type.

pData = (PMYDATA)lpParam;

// Print the parameter values using thread-safe functions.

StringCchPrintf(msgBuf, BUF_SIZE, TEXT("Parameters = %d, %d\n"), 
pData->val1, pData->val2); 
StringCchLength(msgBuf, BUF_SIZE, &cchStringSize);
WriteConsole(hStdout, msgBuf, cchStringSize, &dwChars, NULL);

// Free the memory allocated by the caller for the thread 
// data structure.

HeapFree(GetProcessHeap(), 0, pData);

return 0; 

 
void main()
{
PMYDATA pData;
DWORD dwThreadId[MAX_THREADS];
HANDLE hThread[MAX_THREADS]; 
int i;

// Create MAX_THREADS worker threads.

for( i=0; i<MAX_THREADS; i++ )
{
// Allocate memory for thread data.

pData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(MYDATA));

if( pData == NULL )
ExitProcess(2);

// Generate unique data for each thread.

pData->val1 = i;
pData->val2 = i+100;

hThread[i] = CreateThread( 
NULL, // default security attributes
0, // use default stack size
ThreadProc, // thread function 
pData, // argument to thread function 
0, // use default creation flags 
&dwThreadId[i]); // returns the thread identifier 
 
// Check the return value for success. 
 
if (hThread[i] == NULL) 
{
ExitProcess(i);
}
}

// Wait until all threads have terminated.

WaitForMultipleObjects(MAX_THREADS, hThread, TRUE, INFINITE);

// Close all thread handles upon completion.

for(i=0; i<MAX_THREADS; i++)
{
CloseHandle(hThread[i]);
}
}

[解决办法]
学ACE
[解决办法]
C++本身不支持多线程,标准库里暂时也没有
所以需要其他库的支持,ACE就是可以支持多线程的一种中间件
MFC或者boost也可以
用哪个库不重要,要理解其中的思想
winsock和多线程没有直接联系,只是网络编程经常要用到多线程
[解决办法]
lz既然学操作系统的多线程了,难道没有学到Linux下的c++多线程编程,没学信号量的相关知识?肯定涉及到了嘛
怎么会不会呢?
继续看操作系统的书也行……

热点排行