小编All*_*ang的帖子

C程序与pthread的并发


我正在用我教授的讲义进行评论.当我到达并发部分时,我得到了这个问题:
在幻灯片中,教授给出了两个使用pthread的例子(一个是很好的例子而另一个是坏的.).但我不明白为什么它们之间存在差异.
这是一个很好的例子:

#include <stdio.h> 
#include <stdlib.h> 
#include <pthread.h> 
void *get_rand_num(void *args) { 
  int *nump = malloc(sizeof(int)); 
  srand(pthread_self()); 
  *nump = rand(); 
  return nump; 
} 
int main() { 
  pthread_t tid; 
  void *ptr = NULL; 
  pthread_create(&tid, NULL, get_rand_num, NULL); 
  pthread_join(tid, &ptr); 
  printf("Random number: %d\n", * (int *) ptr); 
  return 0; 
}
Run Code Online (Sandbox Code Playgroud)

坏的例子是

#include <stdio.h> 
#include <stdlib.h> 
#include <pthread.h> 
void *get_rand_num(void *args) { 
  int num; 
  srand(pthread_self()); 
  num = rand(); 
  return &num; 
} 
int main() { 
  pthread_t tid; 
  void *ptr = NULL; 
  pthread_create(&tid, NULL, …
Run Code Online (Sandbox Code Playgroud)

c concurrency multithreading pthreads

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

读取prolog和打印结果中的输入

我正在学习Prolog的想法,这就是我想练习的内容:

我想写一个可以像这样工作的Prolog程序:

?- input([apple,is,fruit]).
?- input([chicken,is,meat]).
?- input([Is,apple,meat]).
No, it is a fruit
?- input[(Is,chicken,meat])
Yes.
Run Code Online (Sandbox Code Playgroud)

当我试图实现这个程序时,我遇到了一些问题:

(1)我使用此代码尝试读取输入并区分问题和断言,但它失败了:

input([]).
input([X|R]) :- X is 'Is', write('test code read question'); write("test code read assertion").
Run Code Online (Sandbox Code Playgroud)

(2)我仍然对如何从输入消息中过滤掉有用信息感到困惑.例如,在[Apple,is,fruit]输入数组中,我需要的只是applefruit.我们通常如何跳过这个is词?

我不想对程序硬编码太多东西,而更喜欢一个好的函数编程风格来解决可以帮助我从中学习的问题.

先感谢您.

prolog dcg

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

Android无法在SD卡上使用mkdir()

我有一些代码在SD卡上创建/获取文件夹:

if( hasSDCard() ){

        UUID uniqueFileName = UUID.randomUUID();

        mediaStorageDir = new File(
                getExternalImageStoragePath(),
                "MyApp");

        if ( ! mediaStorageDir.exists() ){

            if( ! mediaStorageDir.mkdirs() ){

                MyLogger.Error("Create image directory FAILED. path: " + mediaStorageDir.getPath());

                return null;
            }
        }
Run Code Online (Sandbox Code Playgroud)

并且我在我的清单文件中注册了许可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STOREAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,会打印:

Create image directory FAILED. path: /storage/emulated/0/Pictures/MyApp
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样?

===更新===

我尝试了所有这些:

/**
 * get external storage directory path for image
 * @return
 */
public static String getExternalImageStoragePath(){

    String strPath = "";

    if(hasSDCard()){
        //strPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath();
        //strPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
        //strPath = Environment.getExternalStorageDirectory().getPath(); …
Run Code Online (Sandbox Code Playgroud)

java storage android file android-file

1
推荐指数
1
解决办法
2万
查看次数

文本文件编码为UTF_8?

我正在编写一个Java项目,用附件发送电子邮件.

在我的测试用例中,我将一些日语单词"some Hiraganas and Katakanas"添加到我附加的testfile.txt(我用UTF-8编码保存.)

但是当我打开附加的测试文件后,我将测试邮件发送给自己. txt,每个日本人的Chars都变成了"????".

所以我只是想知道为什么会发生这种情况......?

谢谢

艾伦

PS更具体,这是我的代码.我正在使用mail.jar发送电子邮件.

以下是我获取文件的方法:

/**
 * Add an attachment to the Email.
 * @param filePath
 */
public void setFile(String filePath){

    attachment = new File(filePath);

}
Run Code Online (Sandbox Code Playgroud)

以下是我如何将文件附加到我的MIME电子邮件部分.

/*Add attachment if an attachment is given.*/
    if(attachment != null){
    MimeBodyPart attachmentPart = new MimeBodyPart();
    attachmentPart.attachFile(attachment);
    multipart.addBodyPart(attachmentPart);
    }
Run Code Online (Sandbox Code Playgroud)

java encoding text jakarta-mail character-encoding

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

C printf字符串说明符\ t1?

我正在读一段C堆排序代码并遇到这个:

 do{
    printf("\n\t\t1:INSERT\n");
    printf("\n\t\t2:SEARCH\n");
    printf("\n\t\t3:DELETE\n");
    printf("\n\t\t1:DISPLAY\n");
    printf("Enter your choise\n");
    scanf("%d",&choise);
    switch(choise)
    {
        case 1: printf("Enter value to insert\n");
                scanf("%d",&val);
                last=insert(root,val);
                break;
        case 2:printf("Enter value for search \n");
                scanf("%d",&val);
                search(root,val);
                break;
        case 3:delete(root);
                delete(last);
                break;
        case 4:printf("\n\tHEAP\n");
                display(root);
                break;
        default : printf("INVALID choise ... can't you see properly?\n");

    }
Run Code Online (Sandbox Code Playgroud)

任何人都知道什么\t1\t2printfS和它们是如何工作的?我试过谷歌,但没有得到任何有用的信息.谢谢.

c string format-specifiers

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

在OCaml中展平列表列表

我正在使用Ocaml实现这个hoemwork功能:

  • 不允许使用List模块
  • 该函数有类型 'a list list -> 'a list
  • 该函数返回一个列表,该列表由x中的列表连接在一起(只是顶级列表连接在一起,与List.flatten不同)
  • 例如:[[1,2,3],[45]] => [1,2,3,4,5][[[1,2,3],[4,5]],[[6,7]]] => [[1,2,3],[4,5],[6,7]]

我不知道从哪里开始,有人能给我一些建议吗?谢谢

ocaml functional-programming list

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

SYSTEMTIME的30天差异

我愿意问一下是否有人有一些好的算法(或方法)来检查两个SYSTEMTIME变量是否有30天或更长的差异?

谢谢

c++ time date systemtime

0
推荐指数
2
解决办法
2996
查看次数

在C++中放置const的最佳位置在哪里?

我已经完成了C#和C,但是当我来到这个C++项目时,我对这个小代码风格问题感到有些困惑.

我在C++程序中有几个const变量(可能是字符串或数字),我想在一个地方收集它们并从其他类访问它们.

例如,在C#和java中,我们可以有一个资源文件或一个配置文件来存储所有这些数据,或者只是一个单例或静态类.

但是我应该用C++做的最好的方法是什么?我应该将const变量放在头文件中还是创建类似JAVA的类?

c++ coding-style const

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

C++使用delete []删除指针?

以下是C++中的示例代码:

Foo *ptr;
ptr = new Foo;
delete [] ptr;
Run Code Online (Sandbox Code Playgroud)

这会遇到问题吗?什么应该是删除这样的指针和释放内存的正确方法?

谢谢

c++ memory-management

0
推荐指数
2
解决办法
114
查看次数