小编jg9*_*943的帖子

C#中的线程安全增量

我试图在C#中增加列表中的元素,但我需要它是线程安全的,因此计数不会受到影响.

我知道你可以为整数做这个:

Interlocked.Increment(ref sdmpobjectlist1Count);

但是到目前为止我对以下内容的列表不起作用:

lock (padlock)
{
     DifferenceList[diff[d].PropertyName] = DifferenceList[diff[d].PropertyName] + 1;
}
Run Code Online (Sandbox Code Playgroud)

我知道这有效,但我不确定是否有另一种方法可以做到这一点?

c# multithreading increment thread-safety

9
推荐指数
1
解决办法
2781
查看次数

模棱两可的语法

我正在看下面的语法,我相信它在第3行是不明确的,但不确定.

<SL> ? <S>
<SL> ? <SL> <S>
<S> ? i <B> <S> e <S>
<S> ? i <B> <S> 
<S> ? x
<S> ? y
<B> ? 5
<B> ? 13
Run Code Online (Sandbox Code Playgroud)

我发现这个字符串xi13yi5xeyx我相信生成两个不同的解析树,但我不确定我是否做错了.

有人可以验证我的发现吗?

grammar context-free-grammar ambiguous-grammar

5
推荐指数
1
解决办法
1145
查看次数

聊天服务器套接字

我试图在C中创建一个线程聊天服务器,但无法弄清楚如何不将消息回显给用户.我希望能够连接两个或更多客户端,并通过我的服务器相互聊天.

我哪里错了:

#include<stdio.h>
#include<string.h>  //strlen
#include<stdlib.h>  //strlen
#include<sys/socket.h>
#include<arpa/inet.h>   //inet_addr
#include<unistd.h>  //write
#include<pthread.h> //for threading , link with lpthread
#include<errno.h>

void *connectionHandler(void * soc_desc);

typedef struct { 
    int reader;
    int writer;
}args;

int main(int arc, char* argv[]){

    int *new_socket;
    int socFD;
    int client_sock;
    struct sockaddr_in serveraddr;
    struct sockaddr_in clientaddr;
    args t1args, t2args;
    int listenFd;
    //socklen_t clientSize= size(struct sockaddr_in);
    int c;
    int acceptFD;
    int client_sockets[2];

    socFD=socket(AF_INET, SOCK_STREAM, 0);

    puts("Socket created");

    bzero((char*) &serveraddr, sizeof(serveraddr));

    serveraddr.sin_family= AF_INET;

    serveraddr.sin_addr.s_addr=INADDR_ANY;

    serveraddr.sin_port= htons(2000);

    bind(socFD, (struct sockaddr*) …
Run Code Online (Sandbox Code Playgroud)

c sockets chat

0
推荐指数
1
解决办法
8275
查看次数