小编Dab*_*ons的帖子

异步写入套接字线程是否安全?

考虑一下Socket.BeginSend()方法.如果两个线程池线程同时调用此方法,它们各自的消息是否最终会相互混合,或者socket类是否阻止这种情况发生?

c# sockets io asynchronous thread-safety

11
推荐指数
2
解决办法
4716
查看次数

如何创建在构造函数期间初始化的类成员对象

我主要是ac #programmer,但我正在研究的项目让我使用c ++.在C#中,我能够定义一个类的成员,其成员为null,直到初始化为止.像这样:


Class Foo{
    private Bar _bar;
    public Foo(int valueBarNeeds){
        _bar = new Bar(valueBarNeeds);
    }
}
Run Code Online (Sandbox Code Playgroud)

值为_barnull,并且在初始化之前禁止访问.此用例的基本原理是私有对象的构造函数依赖于在构造父类之前未知的某些值.

现在,在C++中,我尝试做同样的事情:


class Foo{
public:
    Foo(int valueBarNeeds){
        _bar = new Bar(valueBarNeeds);
    }
private;
    Bar _bar;
};
Run Code Online (Sandbox Code Playgroud)

编译器抛出一个错误,说没有bar的构造函数接受零参数.我的理解是,在C++中,new关键字意味着完全不同的东西.作为这种差异的一部分,人们可以通过声明没有new关键字来定义在方法结束时处置的对象,而无需手动删除.


SomeFunc(){
    int valueBarNeeds = 100;
    Bar _bar(valueBarNeeds);
    _bar.SomeFunc();
}
Run Code Online (Sandbox Code Playgroud)

_bar 当方法堆栈超出范围时删除.

然后这就提出了我的问题.如果我在C#中用来创建单元化对象的语法实际上试图在C++中初始化对象...如何创建一个可以访问其他类方法的单元化类型,这些类方法是由父对象构造函数构建的?

c++ syntax

7
推荐指数
1
解决办法
7131
查看次数

标准可执行文件可以有导出表吗?

我有一个用C编写的可执行文件,其中包含一些我想在ac#application中使用的函数.我以前写了很多dll,并且能够通过__declspec(dllexport)在函数声明之前使用函数.我可以用可执行文件执行此操作吗?可执行文件实际上会导出函数吗?

portable-executable dllexport

7
推荐指数
1
解决办法
1951
查看次数

命令行GUI如何制作?

我一直想知道CL GUI像topnanovi如何构造?我需要实际制作一个,并且正在寻找有关它们背后的一般概念的指南或教程。

linux shell user-interface command-line tui

6
推荐指数
1
解决办法
2472
查看次数

如何在流程图中表示多个线程

我的任务是为一些客户端服务器创建流程图并在我们的组织软件中启动流程.我们的许多流程同时运行,因为它们彼此没有影响.传统上如何在流程图中表示这一点?

workflow conceptual

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

使用 RTP 在 JMF 中实现播放器

我遇到了一个问题,我在一周的大部分时间里一直在努力解决这个问题,并且尝试了至少 10 种不同的实现,但似乎都失败了。一定有什么我不明白的地方。

我正在使用 jmf 通过 rtp 传输音频。问题是客户端玩家永远不会意识到,因此,代码块,什么也没有播放。

Transmitter的代码如下:

import java.io.File;
import java.io.IOException;
import javax.media.DataSink;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoProcessorException;
import javax.media.NotRealizedError;
import javax.media.Processor;
import javax.media.control.FormatControl;
import javax.media.control.TrackControl;
import javax.media.format.AudioFormat;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.DataSource;

public class RTPTransmitter
{

/**
 * @param args
 */
public static void main(String[] args)
{
    File f = new File("streamtest.wav");

    Format format;

    format = new AudioFormat(AudioFormat.ULAW_RTP, 8000, 8, 1);

    Processor processor = null;
    try
    {
        processor = Manager.createProcessor(f.toURI().toURL());
    } catch (IOException e)
    { …
Run Code Online (Sandbox Code Playgroud)

java audio jmf stream rtp

4
推荐指数
1
解决办法
6865
查看次数

H.264实时流如何实际压缩和传输?

这更像是一个概念问题,而不是技术问题.我对H.264的理解是,它依赖于过去和未来的帧来压缩视频数据.通过RTP或您选择的任何其他协议来获取完全压缩的H.264视频文件并将其流式传输是微不足道的,但是,这如何与实时视频一起使用?在实时视频中,您只能访问过去和当前帧,并且不知道视频的全长,那么H.264编解码器如何实际压缩视频并将其准备为RTP有效载荷?它只是简单地将视频缓冲并分块为任意大小的较小视频并压缩它吗?我能想到这个工作的唯一方法是将视频分成1秒钟的块,将它们压缩为单独的视频,并使它们成为RTP有效载荷.这是它的完成方式还是更多"

video streaming rtp h.264

4
推荐指数
1
解决办法
1343
查看次数

GetConsumingEnumerable实际上是否从BlockingCollection中删除了一个项目?

MSDN上的评论在http://msdn.microsoft.com/en-us/library/dd267312.aspx上说明......

"BlockingCollection的默认集合类型是ConcurrentQueue"

这是否意味着当我在集合上运行"GetConsumingEnumerable()"时,拉出的项目正在从队列中出列,并且在使用后将标记为GC?

换句话说......在下面的代码片段中,

foreach (var item in collection.GetConsumingEnumerable())
        {
            //do something with item
        }
Run Code Online (Sandbox Code Playgroud)

循环迭代后项目会发生什么?

c# collections blockingcollection

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

异步的行为等待新线程

我试图了解async/await的精确行为,并且在我周围缠绕时遇到了一些麻烦.

考虑这个例子:

public async void StartThread()
{
    while(true){
        SomeOtherClass.SomeSynchronousStuff();
        var something = await SomeOtherClass.SomeOtherAsyncMethod();
    }
}

public void ConstructorForThisClass()
{
    Thread thread = new Thread(StartThread);
    thread.Start();
}
Run Code Online (Sandbox Code Playgroud)

我对async/await的理解是,幕后发生的事情是编译器本质上是将代码转换成一堆回调并为每个回调存储状态对象.

所以根据这个,我的问题是:

  1. 新创建的线程是否会异步运行?意思是,当线程正在等待时SomeOtherAsyncMethod,是否可以将其释放到其他工作中?
  2. 如果前面的条件为真,那么线程是否会结束并且线程池线程在SomeOtherAsyncMethod返回时取代它?
  3. 我如何StartThread在线程池线程而不是托管线程上发布函数?
  4. 当一个等待的方法返回其调用者时,它是否被强制在调用它的线程上恢复,或者任何空闲线程可以取代它?

c# multithreading asynchronous async-await

3
推荐指数
2
解决办法
244
查看次数