n********y 发帖数: 48 | 1 程序的基本结构如下所示,
class priceserv{
public:
priceserv(){
}
virtual ~priceserv(){
}
int run()
{
// connect to the price server
// waiting for the price events, and call the corresponding
callback function.
}
//callback function
bool on_quote(char *data)
{
//printf data
}
bool on_trade(char *data)
{
//printf data
}
bool on_depth(char *data)
{
//printf data
}
bool on_record(char *data)
{
//printf data
}
};
int main(){
priceserv tc;
if(tc.run())
{
while(1){
} //keep the program runnning
}
}
tc.run() 执行后, 开了5条thread, 分别对应main, on_quote, on_trade, on_depth,
on_record. 如果有quote, trade, depth, record事件进入, 执行对应的function.
其实就是一个client程序, 接受数据,然后把数据写入文件。
现在我想把程序改成一个server, 在接受数据的同时还可以把数据转发到别的client.
如下是我做的一些改动,
class priceserv{
public:
priceserv(){
}
virtual ~priceserv(){
}
int run()
{
// connect to the price server
// waiting for the price events, and call the corresponding
callback function.
}
bool on_quote(char *data)
{
socket_send(data);
}
bool on_trade(char *data)
{
socket_send(data);
}
bool on_depth(char *data)
{
socket_send(data);
}
bool on_record(char *data)
{
socket_send(data);
}
};
//define a structure (STRUCT_A);
void socket_send(char *text)
{
// write data into a structure A(STRUCT_A)
send(connection, STRUCT_A);
}
int main(){
test tc;
if(tc.run()){
//start the server
// listen, accpet the connection
}
}
现在的问题是4个thread可能同时访问STRUCT_A, 我应该怎么做才能在一个thread对
STRCUT_A读写时,防止别的thread对它写入呢? | p*a 发帖数: 592 | 2 什么平台?问都死用event,mutex。有你可死好久不用生疏了,可能是critical section或者conditional
variable,放狗查pthread
【在 n********y 的大作中提到】 : 程序的基本结构如下所示, : class priceserv{ : public: : priceserv(){ : } : virtual ~priceserv(){ : } : int run() : { : // connect to the price server
| j******n 发帖数: 271 | | P********e 发帖数: 2610 | 4 问都司也用critical section
section或者conditional
【在 p*a 的大作中提到】 : 什么平台?问都死用event,mutex。有你可死好久不用生疏了,可能是critical section或者conditional : variable,放狗查pthread
|
|