多线程????
学操作系统时候,学了多线程,只知道个概念,
一直不知道怎么在编程中实现,
大侠们可否给个代码,引小弟入门啊,
要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++多线程编程,没学信号量的相关知识?肯定涉及到了嘛
怎么会不会呢?
继续看操作系统的书也行……