小编gta*_*atr的帖子

C++中func()和(*this).func()之间的区别

我正在使用C++编写其他代码,我发现了对某个函数的奇怪调用func().这是一个例子:

if(condition)
    func();
else
    (*this).func();
Run Code Online (Sandbox Code Playgroud)

func()和之间有什么区别(*this).func()

调用func()(*this).func()执行不同代码的情况是什么?

在我的情况下,func()不是宏.它是基类中的虚函数,在基类和派生类中都有实现,并且没有空闲func().在if位于在基类的方法.

c++ dispatch

59
推荐指数
4
解决办法
5858
查看次数

EOF 后自动 gRPC unix 重新连接

我有一个应用程序(我们称之为客户端)通过 gRPC 连接到同一台计算机上的另一个进程(我们称之为服务器)。通信通过 unix 套接字进行。

如果服务器重新启动,我的客户端会收到一个EOF连接,并且不会重新建立连接,尽管我希望它clientConn能够自动处理重新连接。

为什么拨号器不处理重新连接?我希望它能通过我传递的退避参数来实现这一点。

下面是一些伪MWE。

  • Run建立初始连接,然后生成goroutineOne
  • goroutineOne等待连接准备好并委托sendfooUpdater
  • fooUpdater流式传输数据,或在出现错误时返回
  • 因为我使用了此答案waitUntilReady引用的伪代码来获取新流。
func main() {
    go func() {
        if err := Run(ctx); err != nil {
            log.Errorf("connection error: %v", err)
        }
        ctxCancel()
    }()
// some wait logic
}


func Run(ctx context.Context) {
    backoffConfig := backoff.Config{
        BaseDelay:  time.Duration(1 * time.Second),
        Multiplier: backoff.DefaultConfig.Multiplier,
        Jitter:     backoff.DefaultConfig.Jitter,
        MaxDelay:    time.Duration(120 * time.Second),
    }

    myConn, err := grpc.DialContext(ctx,
        "/var/run/foo.bar",
        grpc.WithTransportCredentials(insecure.NewCredentials()),
        grpc.WithConnectParams(grpc.ConnectParams{Backoff: backoffConfig, …
Run Code Online (Sandbox Code Playgroud)

go grpc-go

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

为什么_stprintf_s会覆盖其他变量,但_stprintf不是?

我正在使用visual studio for win32编程类.我有一个全局数组的字符串声明TCHAR **bufTh在内存中分配,如

bufTh = (TCHAR**)malloc(nOfTh*sizeof(TCHAR*));
for (i = 0; i < nOfTh; i++)
    bufTh[i] = (TCHAR*)malloc(BUF_LEN*sizeof(TCHAR));
Run Code Online (Sandbox Code Playgroud)

然后我有一些线程,每个线程在这个数组中写入不同的字符串.我注意到,如果我使用_stprintf_s(bufTh[iTh], BUF_LEN, _T("%s\\"), findData.cFileName);,在这个操作之后,其他一些全局变量(在我的情况下是信号量)被覆盖,而如果我使用_stprintf(没有_s)一切顺利.

为什么?我哪里错了?

我也尝试过使用包含字符串的struct数组,typedef struct{TCHAR buf[BUF_LEN];} mystr_t;然后再分配bufTh = (mystr_t*)malloc(nOfTh*sizeof(mystr_t));.在这种情况下_stprintf_s按预期工作没有问题.

编辑:这是一个mcve

#define UNICODE
#define _UNICODE
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NON_CONFORMING_SWPRINTFS
#include <Windows.h>
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#define BUF_LEN _MAX_PATH+1

typedef struct{
    DWORD iTh;
} tdata_t;

TCHAR **bufTh;
PHANDLE sem;

//DWORD WINAPI rThread(LPVOID pThParam);

int _tmain(int argc, LPTSTR …
Run Code Online (Sandbox Code Playgroud)

c++ malloc winapi printf

3
推荐指数
1
解决办法
1983
查看次数

标签 统计

c++ ×2

dispatch ×1

go ×1

grpc-go ×1

malloc ×1

printf ×1

winapi ×1